diff --git a/hooks/layers/useGmaMarkersLayer.js b/hooks/layers/useGmaMarkersLayer.js index 6979c24c1..2b4413ba7 100644 --- a/hooks/layers/useGmaMarkersLayer.js +++ b/hooks/layers/useGmaMarkersLayer.js @@ -1,15 +1,14 @@ -//hooks/layers/useGmaMarkersLayer.js +// hooks/layers/useGmaMarkersLayer.js import { useEffect } from "react"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker"; const useMarkersLayer = (map, markers, GisStationsMeasurements, GMA, oms, isVisible) => { useEffect(() => { - if (!map || !isVisible) return; // Bedingung hier prüfen + if (!map || !isVisible) return; // Entferne alte Marker GMA.clearLayers(); - // Hinzufügen neuer Marker markers.forEach((marker) => { // Finde die Messungen, die zu diesem Marker gehören const relevantMeasurements = GisStationsMeasurements.filter( @@ -18,19 +17,16 @@ const useMarkersLayer = (map, markers, GisStationsMeasurements, GMA, oms, isVisi let measurements = {}; let area_name = marker.options.areaName; - let idLD = marker.options.idLD; relevantMeasurements.forEach((m) => { measurements[m.Na] = m.Val; }); - // Überprüfe, ob die Messwerte vorhanden sind, und setze Standardwerte const lt = measurements["LT"] || "-"; const fbt = measurements["FBT"] || "-"; const gt = measurements["GT"] || "-"; const rlf = measurements["RLF"] || "-"; - // Tooltip für den Marker binden marker.bindTooltip( `
@@ -55,37 +51,40 @@ const useMarkersLayer = (map, markers, GisStationsMeasurements, GMA, oms, isVisi permanent: true, direction: "auto", offset: [60, 0], - interactive: true, // Tooltip is now interactive + interactive: true, } ); - // Hinzufügen eines Kontextmenüs direkt zum Tooltip - marker.on("tooltipopen", function (e) { + // Tooltip-Kontextmenü auf Marker-Kontextmenü verlinken + marker.on("tooltipopen", (e) => { const tooltipElement = e.tooltip._contentNode; + if (tooltipElement) { tooltipElement.addEventListener("contextmenu", (event) => { - event.preventDefault(); // Verhindere das Standard-Kontextmenü - console.log("Rechtsklick auf Tooltip erkannt", { - tooltipContent: tooltipElement.innerHTML, - link: marker.options.link, - }); + event.preventDefault(); // Standard-Kontextmenü verhindern + console.log("Rechtsklick auf Tooltip erkannt"); - if (marker.options.link) { - window.open(marker.options.link, "_blank"); - } else { - console.error("Kein Tooltip-Link vorhanden."); - } + // Simuliere das Kontextmenü für den Marker + const simulatedEvent = { + latlng: marker.getLatLng(), + relatedTarget: marker, + originalEvent: event, + }; + console.log("simulateEvent:",simulatedEvent ) + + marker.fire("contextmenu", simulatedEvent); }); } }); - // Ereignisse für das Öffnen und Schließen des Tooltips - marker.on("mouseover", function () { - this.openPopup(); - }); - marker.on("mouseout", function () { - this.closePopup(); - }); + // Entferne Listener, wenn Tooltip geschlossen wird +/* marker.on("tooltipclose", (e) => { + const tooltipElement = e.tooltip._contentNode; + if (tooltipElement) { + tooltipElement.removeEventListener("contextmenu", () => {}); + //console.log("Tooltip geschlossen"); + } + }); */ // Kontextmenü für Marker hinzufügen addContextMenuToMarker(marker); @@ -99,7 +98,7 @@ const useMarkersLayer = (map, markers, GisStationsMeasurements, GMA, oms, isVisi return () => { GMA.clearLayers(); - map.removeLayer(GMA); // Entferne die Layer, wenn der Hook gereinigt wird + map.removeLayer(GMA); }; }, [map, markers, GisStationsMeasurements, GMA, oms, isVisible]); };