From acf0750ccbd64646dcaead760445666ab8d3dfa2 Mon Sep 17 00:00:00 2001 From: vcoppe Date: Wed, 2 Oct 2024 12:49:08 +0200 Subject: [PATCH] temporary fix for #129 --- website/src/lib/assets/layers.ts | 6 +++--- website/src/lib/components/Map.svelte | 14 ++++++++++++++ .../components/layer-control/LayerControl.svelte | 4 +++- website/src/lib/db.ts | 1 - 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/website/src/lib/assets/layers.ts b/website/src/lib/assets/layers.ts index c492e1f7..fc8e5af2 100644 --- a/website/src/lib/assets/layers.ts +++ b/website/src/lib/assets/layers.ts @@ -1,11 +1,11 @@ import { TramFront, Utensils, ShoppingBasket, Droplet, ShowerHead, Fuel, CircleParking, Fence, FerrisWheel, Bed, Mountain, Pickaxe, Store, TrainFront, Bus, Ship, Croissant, House, Tent, Wrench, Binoculars } from 'lucide-static'; -import { type Style } from 'mapbox-gl'; +import { type StyleSpecification } from 'mapbox-gl'; import ignFrTopo from './custom/ign-fr-topo.json'; import ignFrPlan from './custom/ign-fr-plan.json'; import ignFrSatellite from './custom/ign-fr-satellite.json'; import bikerouterGravel from './custom/bikerouter-gravel.json'; -export const basemaps: { [key: string]: string | Style; } = { +export const basemaps: { [key: string]: string | StyleSpecification; } = { mapboxOutdoors: 'mapbox://styles/mapbox/outdoors-v12', mapboxSatellite: 'mapbox://styles/mapbox/satellite-streets-v12', openStreetMap: { @@ -286,7 +286,7 @@ export const basemaps: { [key: string]: string | Style; } = { }, }; -export const overlays: { [key: string]: string | Style; } = { +export const overlays: { [key: string]: string | StyleSpecification; } = { cyclOSMlite: { version: 8, sources: { diff --git a/website/src/lib/components/Map.svelte b/website/src/lib/components/Map.svelte index b476d5c0..4279bf30 100644 --- a/website/src/lib/components/Map.svelte +++ b/website/src/lib/components/Map.svelte @@ -50,6 +50,20 @@ language = 'en'; } + const loadJson = mapboxgl.Style.prototype._load; + mapboxgl.Style.prototype._load = function (json, validate) { + if ( + json['sources'] && + json['sources']['mapbox-satellite'] && + json['sources']['mapbox-satellite']['data'] && + json['sources']['mapbox-satellite']['data']['data'] + ) { + // Temporary fix for https://github.com/gpxstudio/gpx.studio/issues/129 + delete json['sources']['mapbox-satellite']['data']['data']; + } + loadJson.call(this, json, validate); + }; + let newMap = new mapboxgl.Map({ container: 'map', style: { diff --git a/website/src/lib/components/layer-control/LayerControl.svelte b/website/src/lib/components/layer-control/LayerControl.svelte index 98db64b7..9d46caee 100644 --- a/website/src/lib/components/layer-control/LayerControl.svelte +++ b/website/src/lib/components/layer-control/LayerControl.svelte @@ -130,7 +130,9 @@ }); currentBasemap.subscribe((value) => { // Updates coming from the database, or from the user swapping basemaps - selectedBasemap.set(value); + if (value !== get(selectedBasemap)) { + selectedBasemap.set(value); + } }); let open = false; diff --git a/website/src/lib/db.ts b/website/src/lib/db.ts index c3dabe61..cebfbc8d 100644 --- a/website/src/lib/db.ts +++ b/website/src/lib/db.ts @@ -10,7 +10,6 @@ import { updateAnchorPoints } from '$lib/components/toolbar/tools/routing/Simpli import { SplitType } from '$lib/components/toolbar/tools/scissors/Scissors.svelte'; import { getClosestLinePoint, getElevation } from '$lib/utils'; import { browser } from '$app/environment'; -import type mapboxgl from 'mapbox-gl'; enableMapSet(); enablePatches();