97 lines
2.8 KiB
JavaScript
97 lines
2.8 KiB
JavaScript
// utils/zoomAndCenterUtils.js
|
|
/* export const zoomIn = (e, map) => {
|
|
if (!map) {
|
|
console.error("map is not defined in zoomIn");
|
|
return;
|
|
}
|
|
map.flyTo(e.latlng, map.getZoom() + 1);
|
|
localStorage.setItem("mapZoom", map.getZoom());
|
|
localStorage.setItem("mapCenter", JSON.stringify(map.getCenter()));
|
|
}; */
|
|
|
|
export const zoomIn = (e, map) => {
|
|
if (!map) {
|
|
console.error("map is not defined in zoomIn");
|
|
return;
|
|
}
|
|
|
|
let maxZoom = 20;
|
|
try {
|
|
if (window && window.__tileSourceMaxZoom !== undefined) {
|
|
maxZoom = window.__tileSourceMaxZoom;
|
|
} else {
|
|
const xhr = new XMLHttpRequest();
|
|
xhr.open("GET", "/config.json", false);
|
|
xhr.send(null);
|
|
if (xhr.status === 200) {
|
|
const config = JSON.parse(xhr.responseText);
|
|
if (config.tileSources && config.active && config.tileSources[config.active]) {
|
|
maxZoom = config.tileSources[config.active].maxZoom;
|
|
}
|
|
}
|
|
}
|
|
} catch (e) {}
|
|
|
|
const currentZoom = map.getZoom();
|
|
if (currentZoom < maxZoom) {
|
|
map.flyTo(e.latlng, currentZoom + 1);
|
|
localStorage.setItem("mapZoom", currentZoom + 1);
|
|
localStorage.setItem("mapCenter", JSON.stringify(map.getCenter()));
|
|
}
|
|
};
|
|
|
|
export const zoomOut = map => {
|
|
if (!map) {
|
|
console.error("map is not defined in zoomOut");
|
|
return;
|
|
}
|
|
|
|
let minZoom = 5;
|
|
try {
|
|
if (window && window.__tileSourceMinZoom !== undefined) {
|
|
minZoom = window.__tileSourceMinZoom;
|
|
} else {
|
|
const xhr = new XMLHttpRequest();
|
|
xhr.open("GET", "/config.json", false);
|
|
xhr.send(null);
|
|
if (xhr.status === 200) {
|
|
const config = JSON.parse(xhr.responseText);
|
|
if (config.tileSources && config.active && config.tileSources[config.active]) {
|
|
minZoom = config.tileSources[config.active].minZoom;
|
|
}
|
|
}
|
|
}
|
|
} catch (e) {}
|
|
|
|
const currentZoom = map.getZoom();
|
|
if (currentZoom > minZoom) {
|
|
let zoomOutCenter = [51.41321407879154, 7.739617925303934];
|
|
try {
|
|
const xhr = new XMLHttpRequest();
|
|
xhr.open("GET", "/config.json", false);
|
|
xhr.send(null);
|
|
if (xhr.status === 200) {
|
|
const config = JSON.parse(xhr.responseText);
|
|
if (Array.isArray(config.zoomOutCenter) && config.zoomOutCenter.length === 2) {
|
|
zoomOutCenter = config.zoomOutCenter;
|
|
}
|
|
}
|
|
} catch (e) {}
|
|
const zoom = minZoom;
|
|
|
|
map.flyTo(zoomOutCenter, zoom);
|
|
localStorage.setItem("mapZoom", zoom);
|
|
localStorage.setItem("mapCenter", JSON.stringify(map.getCenter()));
|
|
}
|
|
};
|
|
|
|
export const centerHere = (e, map) => {
|
|
if (!map) {
|
|
console.error("map is not defined in centerHere");
|
|
return;
|
|
}
|
|
map.panTo(e.latlng);
|
|
localStorage.setItem("mapZoom", map.getZoom());
|
|
localStorage.setItem("mapCenter", JSON.stringify(map.getCenter()));
|
|
};
|