overlays fix to stay on top when base map changes
Signed-off-by: K1 <git@karoh.net>
This commit is contained in:
parent
362e1fc88c
commit
83dd1fd3fe
1 changed files with 17 additions and 5 deletions
22
dve.js
22
dve.js
|
|
@ -258,11 +258,12 @@ function sync(source) {
|
|||
updateCrosshairs();
|
||||
}
|
||||
|
||||
function createLayer(config) {
|
||||
function createLayer(config, zIndex) {
|
||||
if (config.type === "xyz") {
|
||||
return L.tileLayer(config.url, {
|
||||
maxZoom: 19,
|
||||
tileSize: 256,
|
||||
zIndex,
|
||||
referrerPolicy: "strict-origin-when-cross-origin"
|
||||
});
|
||||
}
|
||||
|
|
@ -274,26 +275,37 @@ function createLayer(config) {
|
|||
transparent: config.transparent ?? true,
|
||||
version: config.version || "1.3.0",
|
||||
attribution: config.attribution || "",
|
||||
zIndex,
|
||||
referrerPolicy: "strict-origin-when-cross-origin"
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function setLayer(map, config, currentLayer) {
|
||||
function setLayer(map, config, currentLayer, zIndex) {
|
||||
if (currentLayer) map.removeLayer(currentLayer);
|
||||
|
||||
return createLayer(config).addTo(map);
|
||||
return createLayer(config, zIndex).addTo(map);
|
||||
}
|
||||
|
||||
function bringOverlayLayersToFront(index) {
|
||||
Object.values(overlayLayers[index]).forEach(layer => {
|
||||
layer.setZIndex(100);
|
||||
layer.bringToFront();
|
||||
});
|
||||
}
|
||||
|
||||
function setBaseLayer(index, name) {
|
||||
baseLayers[index] = setLayer(maps[index], TILE_SERVERS[name], baseLayers[index]);
|
||||
baseLayers[index] = setLayer(maps[index], TILE_SERVERS[name], baseLayers[index], 1);
|
||||
bringOverlayLayersToFront(index);
|
||||
}
|
||||
|
||||
function setOverlayLayer(index, name, enabled) {
|
||||
if (enabled) {
|
||||
if (!overlayLayers[index][name]) {
|
||||
overlayLayers[index][name] = createLayer(TILE_SERVERS[name]).addTo(maps[index]);
|
||||
overlayLayers[index][name] = createLayer(TILE_SERVERS[name], 100).addTo(maps[index]);
|
||||
}
|
||||
|
||||
overlayLayers[index][name].bringToFront();
|
||||
} else if (overlayLayers[index][name]) {
|
||||
maps[index].removeLayer(overlayLayers[index][name]);
|
||||
delete overlayLayers[index][name];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue