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 =...