fix custom layer creation

This commit is contained in:
vcoppe
2025-10-22 21:54:22 +02:00
parent 9edae7e1b8
commit 899dcddd2e
2 changed files with 24 additions and 23 deletions

View File

@@ -37,11 +37,23 @@
customOverlayOrder, customOverlayOrder,
} = settings; } = settings;
let name: string = ''; let name: string = $state('');
let tileUrls: string[] = ['']; let tileUrls: string[] = $state(['']);
let maxZoom: number = 20; let maxZoom: number = $state(20);
let layerType: 'basemap' | 'overlay' = 'basemap'; let layerType: 'basemap' | 'overlay' = $state('basemap');
let resourceType: 'raster' | 'vector' = 'raster'; let resourceType: 'raster' | 'vector' = $derived.by(() => {
if (tileUrls[0].length > 0) {
if (
tileUrls[0].includes('.json') ||
(tileUrls[0].includes('api.mapbox.com/styles') && !tileUrls[0].includes('tiles'))
) {
return 'vector';
}
}
return 'raster';
});
let selectedLayerId: string | undefined = $state(undefined);
let basemapContainer: HTMLElement; let basemapContainer: HTMLElement;
let overlayContainer: HTMLElement; let overlayContainer: HTMLElement;
@@ -89,16 +101,9 @@
overlaySortable.destroy(); overlaySortable.destroy();
}); });
$: if (tileUrls[0].length > 0) { $effect(() => {
if ( setDataFromSelectedLayer(selectedLayerId);
tileUrls[0].includes('.json') || });
(tileUrls[0].includes('api.mapbox.com/styles') && !tileUrls[0].includes('tiles'))
) {
resourceType = 'vector';
} else {
resourceType = 'raster';
}
}
function createLayer() { function createLayer() {
if (selectedLayerId && $customLayers[selectedLayerId].layerType !== layerType) { if (selectedLayerId && $customLayers[selectedLayerId].layerType !== layerType) {
@@ -272,11 +277,9 @@
$customLayers = tryDeleteLayer($customLayers, layerId); $customLayers = tryDeleteLayer($customLayers, layerId);
} }
let selectedLayerId: string | undefined = undefined; function setDataFromSelectedLayer(layerId?: string) {
if (layerId) {
function setDataFromSelectedLayer() { const layer = $customLayers[layerId];
if (selectedLayerId) {
const layer = $customLayers[selectedLayerId];
name = layer.name; name = layer.name;
tileUrls = layer.tileUrls; tileUrls = layer.tileUrls;
maxZoom = layer.maxZoom; maxZoom = layer.maxZoom;
@@ -290,8 +293,6 @@
resourceType = 'raster'; resourceType = 'raster';
} }
} }
$: selectedLayerId, setDataFromSelectedLayer();
</script> </script>
<div class="flex flex-col"> <div class="flex flex-col">

View File

@@ -32,7 +32,7 @@
} }
let basemap = basemaps.hasOwnProperty($currentBasemap) let basemap = basemaps.hasOwnProperty($currentBasemap)
? basemaps[$currentBasemap] ? basemaps[$currentBasemap]
: ($customLayers[$currentBasemap] ?? basemaps[defaultBasemap]); : ($customLayers[$currentBasemap]?.value ?? basemaps[defaultBasemap]);
$map.removeImport('basemap'); $map.removeImport('basemap');
if (typeof basemap === 'string') { if (typeof basemap === 'string') {
$map.addImport({ id: 'basemap', url: basemap }, 'overlays'); $map.addImport({ id: 'basemap', url: basemap }, 'overlays');