diff --git a/components/MapComponent.js b/components/MapComponent.js index 33c06c3e9..2e24d8cf9 100644 --- a/components/MapComponent.js +++ b/components/MapComponent.js @@ -46,6 +46,7 @@ import { updateLocation } from "../utils/updateBereichUtil"; import { usePolylineTooltipLayer } from "../hooks/usePolylineTooltipLayer"; import { useFetchLineStatusData } from "../hooks/useFetchLineStatusData"; import { useFetchPriorityConfig } from "../hooks/useFetchPriorityConfig"; +import { useUpdateGmaData } from "../hooks/useUpdateGmaData"; //-------------------------------------------- import { currentPoiState } from "../redux/slices/currentPoiSlice.js"; import { selectGisStationsStaticDistrict, setGisStationsStaticDistrict } from "../redux/slices/gisStationsStaticDistrictSlice"; @@ -573,39 +574,14 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => { }, [map]); //-------------------------------------------- //Tooltip Werte aktualisieren - useEffect(() => { - if (!map) return; // Stelle sicher, dass die Karte initialisiert ist - - const updateGmaData = async () => { - try { - const fetchOptions = { - method: "GET", - headers: { - Connection: "close", - }, - }; - - // Aktualisiere die Messdaten - await fetchGisStationsMeasurements(mapGisStationsMeasurementsUrl, setGisStationsMeasurements, fetchOptions); - - // Aktualisiere die Marker-Layer - // useGmaMarkersLayer(map, gmaMarkers, GisStationsMeasurements, layers.MAP_LAYERS.GMA, oms); - } catch (error) { - console.error("Fehler beim Aktualisieren der GMA-Daten:", error); - } - }; - - // Initialer Datenabruf - updateGmaData(); - - // Setze ein Intervall, um die Daten alle 5 Sekunden zu aktualisieren - /* const intervalId = setInterval(() => { - updateGmaData(); - }, 5000); - - // Cleanup-Funktion, um das Intervall zu entfernen, wenn die Komponente entladen wird - return () => clearInterval(intervalId); */ - }, [map, gmaMarkers, layers.MAP_LAYERS.GMA, oms, mapGisStationsMeasurementsUrl]); + useUpdateGmaData( + map, + setGisStationsMeasurements, + mapGisStationsMeasurementsUrl, + gmaMarkers, + layers, + oms + ); //--------------------------------- diff --git a/hooks/useUpdateGmaData.js b/hooks/useUpdateGmaData.js new file mode 100644 index 000000000..0fda92754 --- /dev/null +++ b/hooks/useUpdateGmaData.js @@ -0,0 +1,55 @@ +import { useEffect } from "react"; +import { fetchGisStationsMeasurements } from "../services/fetchData"; + +export const useUpdateGmaData = ( + map, + setGisStationsMeasurements, + mapGisStationsMeasurementsUrl, + gmaMarkers, + layers, + oms +) => { + useEffect(() => { + if (!map) return; // Sicherstellen, dass die Karte initialisiert ist + + const updateGmaData = async () => { + try { + const fetchOptions = { + method: "GET", + headers: { + Connection: "close", + }, + }; + + // Aktualisiere die Messdaten + await fetchGisStationsMeasurements( + mapGisStationsMeasurementsUrl, + setGisStationsMeasurements, + fetchOptions + ); + + // Aktualisiere die Marker-Layer + // useGmaMarkersLayer(map, gmaMarkers, GisStationsMeasurements, layers.MAP_LAYERS.GMA, oms); + } catch (error) { + console.error("Fehler beim Aktualisieren der GMA-Daten:", error); + } + }; + + // Initialer Datenabruf + updateGmaData(); + + // Intervall für periodische Updates (optional einkommentieren) + /* const intervalId = setInterval(() => { + updateGmaData(); + }, 5000); + + return () => clearInterval(intervalId); */ + }, [ + map, + gmaMarkers, + layers.MAP_LAYERS.GMA, + oms, + mapGisStationsMeasurementsUrl, + setGisStationsMeasurements, + ]); +};