Files
nodeMap/utils/zoomAndCenterUtils.js
2025-09-16 11:55:41 +02:00

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()));
};