mirror of
https://github.com/gpxstudio/gpx.studio.git
synced 2025-08-31 23:53:25 +00:00
fix custom layer replacement, closes #22
This commit is contained in:
@@ -39,6 +39,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function createLayer() {
|
function createLayer() {
|
||||||
|
if (selectedLayerId && $customLayers[selectedLayerId].layerType !== layerType) {
|
||||||
|
deleteLayer(selectedLayerId);
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof maxZoom === 'string') {
|
if (typeof maxZoom === 'string') {
|
||||||
maxZoom = parseInt(maxZoom);
|
maxZoom = parseInt(maxZoom);
|
||||||
}
|
}
|
||||||
@@ -106,6 +110,8 @@
|
|||||||
$tree.basemaps['custom'][layerId] = true;
|
$tree.basemaps['custom'][layerId] = true;
|
||||||
return $tree;
|
return $tree;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$currentBasemap = layerId;
|
||||||
} else {
|
} else {
|
||||||
selectedOverlayTree.update(($tree) => {
|
selectedOverlayTree.update(($tree) => {
|
||||||
if (!$tree.overlays.hasOwnProperty('custom')) {
|
if (!$tree.overlays.hasOwnProperty('custom')) {
|
||||||
@@ -114,6 +120,16 @@
|
|||||||
$tree.overlays['custom'][layerId] = true;
|
$tree.overlays['custom'][layerId] = true;
|
||||||
return $tree;
|
return $tree;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if ($map && $map.getSource(layerId)) {
|
||||||
|
// Reset source when updating an existing layer
|
||||||
|
if ($map.getLayer(layerId)) {
|
||||||
|
$map.removeLayer(layerId);
|
||||||
|
}
|
||||||
|
$map.removeSource(layerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
$currentOverlays.overlays['custom'][layerId] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,8 +158,13 @@
|
|||||||
$selectedBasemapTree.basemaps = tryDeleteLayer($selectedBasemapTree.basemaps, 'custom');
|
$selectedBasemapTree.basemaps = tryDeleteLayer($selectedBasemapTree.basemaps, 'custom');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$currentOverlays = tryDeleteLayer($currentOverlays, layerId);
|
$currentOverlays.overlays['custom'][layerId] = false;
|
||||||
$previousOverlays = tryDeleteLayer($previousOverlays, layerId);
|
if ($previousOverlays.overlays['custom']) {
|
||||||
|
$previousOverlays.overlays['custom'] = tryDeleteLayer(
|
||||||
|
$previousOverlays.overlays['custom'],
|
||||||
|
layerId
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
$selectedOverlayTree.overlays['custom'] = tryDeleteLayer(
|
$selectedOverlayTree.overlays['custom'] = tryDeleteLayer(
|
||||||
$selectedOverlayTree.overlays['custom'],
|
$selectedOverlayTree.overlays['custom'],
|
||||||
|
@@ -30,14 +30,19 @@
|
|||||||
opacities
|
opacities
|
||||||
} = settings;
|
} = settings;
|
||||||
|
|
||||||
$: if ($map) {
|
function setStyle() {
|
||||||
// Set style depending on the current basemap
|
if ($map) {
|
||||||
let basemap = basemaps.hasOwnProperty($currentBasemap)
|
let basemap = basemaps.hasOwnProperty($currentBasemap)
|
||||||
? basemaps[$currentBasemap]
|
? basemaps[$currentBasemap]
|
||||||
: $customLayers[$currentBasemap]?.value ?? basemaps[defaultBasemap];
|
: $customLayers[$currentBasemap]?.value ?? basemaps[defaultBasemap];
|
||||||
$map.setStyle(basemap, {
|
$map.setStyle(basemap, {
|
||||||
diff: false
|
diff: false
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$: if ($map && $currentBasemap) {
|
||||||
|
setStyle();
|
||||||
}
|
}
|
||||||
|
|
||||||
$: if ($map && $currentOverlays) {
|
$: if ($map && $currentOverlays) {
|
||||||
|
Reference in New Issue
Block a user