102 lines
3.3 KiB
JavaScript
102 lines
3.3 KiB
JavaScript
// Sdílené podkladové mapy. Výchozí je OpenStreetMap, volbu drží cookie mapovyPodklad.
|
|
(function (global) {
|
|
var COOKIE = 'mapovyPodklad';
|
|
var VYCHOZI = 'osm';
|
|
var API_KEY = 'Uw8gm6JPZpnT3GfNnh8adARpQI-WBGy6QaY9g6VhD74';
|
|
|
|
function ctiCookie(jmeno) {
|
|
var shoda = document.cookie.match(new RegExp('(?:^|; )' + jmeno + '=([^;]*)'));
|
|
if (!shoda) {
|
|
return '';
|
|
}
|
|
try {
|
|
return decodeURIComponent(shoda[1]);
|
|
} catch (e) {
|
|
return shoda[1];
|
|
}
|
|
}
|
|
|
|
function klic() {
|
|
var hodnota = ctiCookie(COOKIE);
|
|
if (hodnota === 'mapycz' || hodnota === 'mapycz-letecka') {
|
|
return hodnota;
|
|
}
|
|
return VYCHOZI;
|
|
}
|
|
|
|
function vytvor() {
|
|
return {
|
|
osm: L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
|
maxZoom: 19,
|
|
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>',
|
|
}),
|
|
mapycz: L.tileLayer('https://api.mapy.cz/v1/maptiles/basic/256/{z}/{x}/{y}?apikey=' + API_KEY, {
|
|
minZoom: 0,
|
|
maxZoom: 19,
|
|
attribution: '<a href="https://api.mapy.cz/copyright" target="_blank">© Seznam.cz a.s. a další</a>',
|
|
}),
|
|
'mapycz-letecka': L.tileLayer('https://api.mapy.cz/v1/maptiles/aerial/256/{z}/{x}/{y}?apikey=' + API_KEY, {
|
|
minZoom: 0,
|
|
maxZoom: 19,
|
|
attribution: '<a href="https://api.mapy.cz/copyright" target="_blank">© Seznam.cz a.s. a další</a>',
|
|
}),
|
|
};
|
|
}
|
|
|
|
function vychozi(vrstvy) {
|
|
return vrstvy[klic()] || vrstvy[VYCHOZI];
|
|
}
|
|
|
|
function popisky(vrstvy) {
|
|
return {
|
|
'Mapy.cz': vrstvy.mapycz,
|
|
'Mapy.cz (letecká)': vrstvy['mapycz-letecka'],
|
|
'OpenStreetMap': vrstvy.osm,
|
|
};
|
|
}
|
|
|
|
function jeMapyCz(vrstva, vrstvy) {
|
|
return vrstva === vrstvy.mapycz || vrstva === vrstvy['mapycz-letecka'];
|
|
}
|
|
|
|
function logo(map, vrstvy) {
|
|
var control = new (L.Control.extend({
|
|
options: { position: 'bottomleft' },
|
|
onAdd: function () {
|
|
var container = L.DomUtil.create('div');
|
|
var link = L.DomUtil.create('a', '', container);
|
|
link.setAttribute('href', 'http://mapy.cz/');
|
|
link.setAttribute('target', '_blank');
|
|
link.innerHTML = '<img src="https://api.mapy.cz/img/api/logo.svg" alt="Mapy.cz" />';
|
|
L.DomEvent.disableClickPropagation(link);
|
|
return container;
|
|
},
|
|
}))();
|
|
|
|
function obnov() {
|
|
var aktivni = false;
|
|
map.eachLayer(function (layer) {
|
|
if (jeMapyCz(layer, vrstvy)) {
|
|
aktivni = true;
|
|
}
|
|
});
|
|
if (aktivni && !control._map) {
|
|
control.addTo(map);
|
|
} else if (!aktivni && control._map) {
|
|
control.remove();
|
|
}
|
|
}
|
|
|
|
map.on('baselayerchange', obnov);
|
|
obnov();
|
|
}
|
|
|
|
global.MapovePodklady = {
|
|
klic: klic,
|
|
vytvor: vytvor,
|
|
vychozi: vychozi,
|
|
popisky: popisky,
|
|
logo: logo,
|
|
};
|
|
})(window);
|