mirror of
https://github.com/gpxstudio/gpx.studio.git
synced 2025-11-04 13:31:13 +00:00
fix custom layer creation
This commit is contained in:
@@ -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">
|
||||||
|
|||||||
@@ -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');
|
||||||
|
|||||||
Reference in New Issue
Block a user