diff --git a/website/src/lib/assets/layers.ts b/website/src/lib/assets/layers.ts
index b9371fef..d832a4bc 100644
--- a/website/src/lib/assets/layers.ts
+++ b/website/src/lib/assets/layers.ts
@@ -371,7 +371,9 @@ export const opacities: { [key: string]: number; } = {
swisstopoSlope: 0.4,
};
-export const basemapTree = {
+export type LayerTreeType = string[] | { [key: string]: LayerTreeType; };
+
+export const basemapTree: LayerTreeType = {
world: ['mapboxOutdoors', 'mapboxSatellite', 'openStreetMap', 'openTopoMap', 'openHikingMap', 'cyclOSM'],
countries: {
bulgaria: ['bgMountains'],
@@ -387,7 +389,7 @@ export const basemapTree = {
},
}
-export const overlayTree = {
+export const overlayTree: LayerTreeType = {
world: {
cyclOSM: ['cyclOSMlite'],
waymarkedTrails: ['waymarkedTrailsHiking', 'waymarkedTrailsCycling', 'waymarkedTrailsMTB', 'waymarkedTrailsSkating', 'waymarkedTrailsHorseRiding', 'waymarkedTrailsWinter']
diff --git a/website/src/lib/components/LayerControl.svelte b/website/src/lib/components/LayerControl.svelte
deleted file mode 100644
index ea54b74c..00000000
--- a/website/src/lib/components/LayerControl.svelte
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
-
-
- {
- map.setStyle(basemaps[id]);
- }}
- onOverlayChange={(id, checked) => {
- if (checked) {
- if (!map.getSource(id)) {
- map.addSource(id, overlays[id]);
- }
- map.addLayer({
- id,
- type: overlays[id].type === 'raster' ? 'raster' : 'line',
- source: id,
- paint: {
- ...(id in opacities
- ? overlays[id].type === 'raster'
- ? { 'raster-opacity': opacities[id] }
- : { 'line-opacity': opacities[id] }
- : {})
- }
- });
- } else {
- map.removeLayer(id);
- }
- }}
- />
-
diff --git a/website/src/lib/components/LayerTree.svelte b/website/src/lib/components/LayerTree.svelte
deleted file mode 100644
index 28878850..00000000
--- a/website/src/lib/components/LayerTree.svelte
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
- {#each Object.keys(basemaps) as id}
-
-
-
-
- {/each}
-
-
- {#each Object.keys(overlays) as id}
-
- {
- onOverlayChange(id, checked === 'indeterminate' ? false : checked);
- }}
- />
-
-
- {/each}
-
-
diff --git a/website/src/lib/components/Map.svelte b/website/src/lib/components/Map.svelte
index a1d8d5d3..62ea07fa 100644
--- a/website/src/lib/components/Map.svelte
+++ b/website/src/lib/components/Map.svelte
@@ -6,7 +6,7 @@
import MapboxGeocoder from '@mapbox/mapbox-gl-geocoder';
import '@mapbox/mapbox-gl-geocoder/dist/mapbox-gl-geocoder.css';
- import LayerControl from './LayerControl.svelte';
+ import LayerControl from '$lib/components/layer-control/LayerControl.svelte';
mapboxgl.accessToken =
'pk.eyJ1IjoiZ3B4c3R1ZGlvIiwiYSI6ImNrdHVoM2pjNTBodmUycG1yZTNwcnJ3MzkifQ.YZnNs9s9oCQPzoXAWs_SLg';
diff --git a/website/src/lib/components/layer-control/LayerControl.svelte b/website/src/lib/components/layer-control/LayerControl.svelte
new file mode 100644
index 00000000..8daf96b8
--- /dev/null
+++ b/website/src/lib/components/layer-control/LayerControl.svelte
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+ {
+ if (map) {
+ map.setStyle(basemaps[id]);
+ }
+ }}
+ />
+ {
+ if (map) {
+ if (checked) {
+ if (!map.getSource(id)) {
+ map.addSource(id, overlays[id]);
+ }
+ map.addLayer({
+ id,
+ type: overlays[id].type === 'raster' ? 'raster' : 'line',
+ source: id,
+ paint: {
+ ...(id in opacities
+ ? overlays[id].type === 'raster'
+ ? { 'raster-opacity': opacities[id] }
+ : { 'line-opacity': opacities[id] }
+ : {})
+ }
+ });
+ } else {
+ map.removeLayer(id);
+ }
+ }
+ }}
+ />
+
+
diff --git a/website/src/lib/components/layer-control/LayerTree.svelte b/website/src/lib/components/layer-control/LayerTree.svelte
new file mode 100644
index 00000000..9e043c83
--- /dev/null
+++ b/website/src/lib/components/layer-control/LayerTree.svelte
@@ -0,0 +1,14 @@
+
+
+
diff --git a/website/src/lib/components/layer-control/LayerTreeNode.svelte b/website/src/lib/components/layer-control/LayerTreeNode.svelte
new file mode 100644
index 00000000..03723936
--- /dev/null
+++ b/website/src/lib/components/layer-control/LayerTreeNode.svelte
@@ -0,0 +1,47 @@
+
+
+
diff --git a/website/src/routes/+page.svelte b/website/src/routes/+page.svelte
index 0205fa64..25490dda 100644
--- a/website/src/routes/+page.svelte
+++ b/website/src/routes/+page.svelte
@@ -10,5 +10,5 @@
- Test
+ Test