From 35915bb91f97da83eac7a5606a969dff93eed498 Mon Sep 17 00:00:00 2001 From: ISA Date: Fri, 29 Nov 2024 09:31:55 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20Sichtbarkeitsbedingung=20im=20GMA-Layer-?= =?UTF-8?q?Hook=20behoben,=20um=20Hook-Fehler=20zu=20vermeiden=20-=20Refak?= =?UTF-8?q?torierung=20des=20`useMarkersLayer`-Hooks=20zur=20internen=20Be?= =?UTF-8?q?handlung=20der=20Sichtbarkeitsbedingung.=20-=20`isVisible`-Para?= =?UTF-8?q?meter=20hinzugef=C3=BCgt,=20um=20konsistente=20Hook-Aufrufe=20s?= =?UTF-8?q?icherzustellen.=20-=20Cleanup-Logik=20verbessert,=20um=20Layer?= =?UTF-8?q?=20beim=20Unmount=20korrekt=20zu=20entfernen.=20-=20GMA-Marker?= =?UTF-8?q?=20und=20Tooltips=20basierend=20auf=20Sichtbarkeit=20korrekt=20?= =?UTF-8?q?verarbeitet.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/MapComponent.js | 13 ++++++++++--- hooks/layers/useGmaMarkersLayer.js | 15 ++++++++++----- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/components/MapComponent.js b/components/MapComponent.js index 99460c2ec..a0ba9eabb 100644 --- a/components/MapComponent.js +++ b/components/MapComponent.js @@ -240,7 +240,14 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => { fetchAndSetUserRights(); }, []); - useGmaMarkersLayer(map, gmaMarkers, GisStationsMeasurements, layers.MAP_LAYERS.GMA, oms); // Verwende den ausgelagerten Hook + useGmaMarkersLayer( + map, + gmaMarkers, + GisStationsMeasurements, + layers.MAP_LAYERS.GMA, + oms, + mapLayersVisibility.GMA // Übergebe die Sichtbarkeitsbedingung als Parameter + ); useEffect(() => { const fetchWebServiceMap = async () => { @@ -679,7 +686,7 @@ await fetchGisStationsStatusDistrict(mapGisStationsStatusDistrictUrl, setGisStat initializeContextMenu(); }, [map]); //-------------------------------------------- - + //Tooltip Werte aktualisieren useEffect(() => { if (!map) return; // Stelle sicher, dass die Karte initialisiert ist @@ -696,7 +703,7 @@ await fetchGisStationsStatusDistrict(mapGisStationsStatusDistrictUrl, setGisStat await fetchGisStationsMeasurements(mapGisStationsMeasurementsUrl, setGisStationsMeasurements, fetchOptions); // Aktualisiere die Marker-Layer - useGmaMarkersLayer(map, gmaMarkers, GisStationsMeasurements, layers.MAP_LAYERS.GMA, oms); + // useGmaMarkersLayer(map, gmaMarkers, GisStationsMeasurements, layers.MAP_LAYERS.GMA, oms); } catch (error) { console.error("Fehler beim Aktualisieren der GMA-Daten:", error); } diff --git a/hooks/layers/useGmaMarkersLayer.js b/hooks/layers/useGmaMarkersLayer.js index d440640c9..8b5a99e04 100644 --- a/hooks/layers/useGmaMarkersLayer.js +++ b/hooks/layers/useGmaMarkersLayer.js @@ -1,9 +1,10 @@ -import { useEffect } from "react"; +//hooks/layers/useGmaMarkersLayer.js +import { useEffect } from "react"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker"; -const useMarkersLayer = (map, markers, GisStationsMeasurements, GMA, oms) => { +const useMarkersLayer = (map, markers, GisStationsMeasurements, GMA, oms, isVisible) => { useEffect(() => { - if (!map) return; + if (!map || !isVisible) return; // Bedingung hier prüfen // Entferne alte Marker GMA.clearLayers(); @@ -28,7 +29,6 @@ const useMarkersLayer = (map, markers, GisStationsMeasurements, GMA, oms) => { const rlf = measurements["RLF"] || "---"; console.log(`Station oder Bereich ${area_name} - LT: ${lt}, FBT: ${fbt}, GT: ${gt}, RLF: ${rlf}`); - console.log(`Station idLD: ${idLD} `); // Tooltip für den Marker binden marker.bindTooltip( @@ -75,7 +75,12 @@ const useMarkersLayer = (map, markers, GisStationsMeasurements, GMA, oms) => { }); map.addLayer(GMA); - }, [map, markers, GisStationsMeasurements, GMA, oms]); + + return () => { + GMA.clearLayers(); + map.removeLayer(GMA); // Entferne die Layer, wenn der Hook gereinigt wird + }; + }, [map, markers, GisStationsMeasurements, GMA, oms, isVisible]); }; export default useMarkersLayer;