JSFiddle - React, Tailwind, and code Playground

by _DR_

HTML

<script src="http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet.js"></script>
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet.css">
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/md5.js"></script>
<div id="map"></div>

CSS

html, body { height: 100%; width: 100%; }
#map { height: 100%; width: 100%; }

JavaScript

// Пример подключения карты с сайта http://retromap.ru/ в Leaflet.
// В качестве примера былв взята карта http://retromap.ru/m.php#l=14194717.

// Идентификатор карты, взят из URL (l=14194717).
var mcode = 14194717;
var map_list = [];

map_list[mcode] = {};

// Значение 'encoding' вычисляется следующим образом.
// Выполняем запрос вида http://retromap.ru/read_mcodes_cached.php?lang=ru&full=1&mcodes=14194717.
// Получаем ответ:
// {
//     "14194717": {
//         "n": "1947 Кузнецкий бассейн ",
//         "d": "p",
//         "caption": "Кузнецкий бассейн. Карта из Атласа СССР. Главное Управление Геодезии и Картографии при Совете Министров СССР. Издание 1947 года. Масштаб 1:2,000,000",
//         "keywords": "атласы",
//         "tag": "0",
//         "created": "18.05.14",
//         "e": "3",
//         "t": "5173",
//         "posts": "1",
//         "hits": "2521",
//         "pid": "4415",
//         "bounds": "52.2681580,81.9140625,57.1362381,88.9453125",
//         "c": "54.641483,86.165943",
//         "w": "428"
//     }
// }
// Значение "e" - это и есть 'encoding'.
map_list[mcode]['encoding'] = 3;

function huff(str, a, b) {
    return str.substr(a,b);
}

function huffman(s) {
    return CryptoJS.MD5(s).toString();
};

function set_prefix(str) {
    return "FF" + huffman(" " + str).substr(0, 4) + "_";
}

function m_prefix(mcode, str) {
    if (map_list[mcode].encoding) {
        code = (mcode % 2) ? "1" : "0";
        if ((str.substr(str.length - 1, 1) == code) || (str.substr(str.length - 3, 1) == "0")) return set_prefix(str + ".jpg")
    }
    return "";
}

function buckweatt(m, q) {
    var p = m_prefix(m, q);
    if (map_list[m].encoding == 0) return q;
    if (map_list[m].encoding != 2) return p + q;
    if (p.charAt(0) != "F") return q;

    var w = q,
        f = v = "";

    if (q.length > 16) w = q.substr(q.length - 16, 16);

    var r = String(Number(w) + 10 * m * (Number(w.charAt(w.length - 1)) + 1));

    if (q.length > 16) {
        f =...