diff --git a/src/public/app/widgets/geo_map.ts b/src/public/app/widgets/geo_map.ts index b9f14c3ef..fabefcdc9 100644 --- a/src/public/app/widgets/geo_map.ts +++ b/src/public/app/widgets/geo_map.ts @@ -52,8 +52,6 @@ export default class GeoMapWidget extends NoteContextAwareWidget { this.initCallback(L); } - map.addEventListener("zoom", () => this.triggerCommand("refreshTouchBar")); - L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", { attribution: '© OpenStreetMap contributors', detectRetina: true diff --git a/src/public/app/widgets/type_widgets/geo_map.ts b/src/public/app/widgets/type_widgets/geo_map.ts index 9c86bbf48..b68b2c09c 100644 --- a/src/public/app/widgets/type_widgets/geo_map.ts +++ b/src/public/app/widgets/type_widgets/geo_map.ts @@ -105,6 +105,7 @@ export default class GeoMapTypeWidget extends TypeWidget { private currentMarkerData: Record; private currentTrackData: Record; private gpxLoaded?: boolean; + private ignoreNextZoomEvent?: boolean; static getType() { return "geoMap"; @@ -144,6 +145,13 @@ export default class GeoMapTypeWidget extends TypeWidget { map.on("moveend", updateFn); map.on("zoomend", updateFn); map.on("click", (e) => this.#onMapClicked(e)); + map.on("zoom", () => { + if (!this.ignoreNextZoomEvent) { + this.triggerCommand("refreshTouchBar"); + } + + this.ignoreNextZoomEvent = false; + }); } async #restoreViewportAndZoom() { @@ -383,6 +391,7 @@ export default class GeoMapTypeWidget extends TypeWidget { buildTouchBarCommand({ TouchBar }: CommandListenerData<"buildTouchBar">) { const map = this.geoMapWidget.map; + const that = this; if (!map) { return; } @@ -394,6 +403,7 @@ export default class GeoMapTypeWidget extends TypeWidget { minValue: map.getMinZoom(), maxValue: map.getMaxZoom(), change(newValue) { + that.ignoreNextZoomEvent = true; map.setZoom(newValue); }, }),