mirror of
https://github.com/neocturne/MinedMap.git
synced 2025-03-04 17:23:33 +01:00
viewer: update opened marker popup on URL hash change
This commit is contained in:
parent
08f84fa339
commit
3d024c6cd8
1 changed files with 23 additions and 3 deletions
|
@ -38,9 +38,21 @@ const signKinds = {
|
|||
|
||||
const params = {};
|
||||
const signIcons = {};
|
||||
const markers = {};
|
||||
|
||||
let updateHash = () => {};
|
||||
|
||||
function coordKey(coords) {
|
||||
if (!coords)
|
||||
return null;
|
||||
|
||||
return `${coords[0]},${coords[1]}`;
|
||||
}
|
||||
|
||||
function getMarker(coords) {
|
||||
return markers[coordKey(coords)];
|
||||
}
|
||||
|
||||
function signIcon(material, kind) {
|
||||
function createSignIcon(material, kind) {
|
||||
const {iconSize, popupAnchor} = signKinds[kind];
|
||||
|
@ -280,7 +292,7 @@ function loadSigns(signLayer) {
|
|||
|
||||
// Group signs by x,z coordinates
|
||||
for (const sign of res.signs) {
|
||||
const key = `${sign.x},${sign.z}`;
|
||||
const key = coordKey([sign.x, sign.z]);
|
||||
const group = groups[key] ??= [];
|
||||
group.push(sign);
|
||||
}
|
||||
|
@ -324,6 +336,8 @@ function loadSigns(signLayer) {
|
|||
icon: signIcon(material, kind),
|
||||
}).addTo(signLayer).bindPopup(popup);
|
||||
|
||||
markers[coordKey([x, z])] = marker;
|
||||
|
||||
if (params.marker && x === params.marker[0] && z === params.marker[1])
|
||||
marker.openPopup();
|
||||
}
|
||||
|
@ -451,21 +465,27 @@ window.createMap = function () {
|
|||
if (window.location.hash === makeHash())
|
||||
return;
|
||||
|
||||
updateParams();
|
||||
const prevMarkerCoords = params.marker;
|
||||
|
||||
map.setView([-params.z, params.x], params.zoom);
|
||||
updateParams();
|
||||
|
||||
if (params.light)
|
||||
map.addLayer(lightLayer);
|
||||
else
|
||||
map.removeLayer(lightLayer);
|
||||
|
||||
if (features.signs) {
|
||||
if (params.signs)
|
||||
map.addLayer(signLayer);
|
||||
else
|
||||
map.removeLayer(signLayer);
|
||||
|
||||
if (coordKey(prevMarkerCoords) !== coordKey(params.marker))
|
||||
getMarker(params.marker)?.openPopup();
|
||||
}
|
||||
|
||||
map.setView([-params.z, params.x], params.zoom);
|
||||
|
||||
updateHash();
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue