From 600ea254afdb78b781f94c14a3d0d06a2ffa72a1 Mon Sep 17 00:00:00 2001 From: Drew Slobodnjak <60050885+drew08t@users.noreply.github.com> Date: Fri, 2 Sep 2022 10:53:21 -0700 Subject: [PATCH] Geomap: Fix duplicate layer bug (#54660) * Geomap: Fix duplicate layer bug * Remove dependency on name parameter --- public/app/plugins/panel/geomap/GeomapPanel.tsx | 8 ++++++++ .../plugins/panel/geomap/components/MeasureOverlay.tsx | 1 + 2 files changed, 9 insertions(+) diff --git a/public/app/plugins/panel/geomap/GeomapPanel.tsx b/public/app/plugins/panel/geomap/GeomapPanel.tsx index 362e5c6d0a2..20f83337713 100644 --- a/public/app/plugins/panel/geomap/GeomapPanel.tsx +++ b/public/app/plugins/panel/geomap/GeomapPanel.tsx @@ -35,6 +35,7 @@ import { GeomapOverlay, OverlayProps } from './GeomapOverlay'; import { GeomapTooltip } from './GeomapTooltip'; import { DebugOverlay } from './components/DebugOverlay'; import { MeasureOverlay } from './components/MeasureOverlay'; +import { MeasureVectorLayer } from './components/MeasureVectorLayer'; import { GeomapHoverPayload, GeomapLayerHover } from './event'; import { getGlobalStyles } from './globalStyles'; import { defaultMarkersConfig, MARKERS_LAYER_ID } from './layers/data/markersLayer'; @@ -146,6 +147,12 @@ export class GeomapPanel extends Component { private doOptionsUpdate(selected: number) { const { options, onOptionsChange } = this.props; const layers = this.layers; + this.map?.getLayers().forEach((l) => { + if (l instanceof MeasureVectorLayer) { + this.map?.removeLayer(l); + this.map?.addLayer(l); + } + }); onOptionsChange({ ...options, basemap: layers[0].options, @@ -227,6 +234,7 @@ export class GeomapPanel extends Component { }); }, reorder: (startIndex: number, endIndex: number) => { + // TODO look into reorder with respect to measure layer const result = Array.from(this.layers); const [removed] = result.splice(startIndex, 1); result.splice(endIndex, 0, removed); diff --git a/public/app/plugins/panel/geomap/components/MeasureOverlay.tsx b/public/app/plugins/panel/geomap/components/MeasureOverlay.tsx index f11802ab2b2..945bc99a5e0 100644 --- a/public/app/plugins/panel/geomap/components/MeasureOverlay.tsx +++ b/public/app/plugins/panel/geomap/components/MeasureOverlay.tsx @@ -53,6 +53,7 @@ export const MeasureOverlay = ({ map, menuActiveState }: Props) => { if (firstLoad) { // Initialize on first load setFirstLoad(false); + vector.current.setZIndex(1); map.addLayer(vector.current); map.addInteraction(vector.current.modify); }