From 8a9216980a989729b01add7a892f6ea1aa9ee59d Mon Sep 17 00:00:00 2001 From: ISA Date: Tue, 3 Sep 2024 14:21:48 +0200 Subject: [PATCH] =?UTF-8?q?mit=20rechte=20Maustaste=20auf=20ein=20Ger?= =?UTF-8?q?=C3=A4t=20disablePolylineEvents(window.polylines);,=20muss=20no?= =?UTF-8?q?ch=20angepasst=20werden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/createAndSetDevices.js | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/utils/createAndSetDevices.js b/utils/createAndSetDevices.js index 9781a00b4..7228a7b39 100644 --- a/utils/createAndSetDevices.js +++ b/utils/createAndSetDevices.js @@ -1,10 +1,10 @@ -// /utils/createAndSetDevices.js import circleIcon from "../components/gisPolylines/icons/CircleIcon"; import { saveLineData, redrawPolyline } from "./mapUtils"; import L from "leaflet"; import "leaflet.smooth_marker_bouncing"; import { toast } from "react-toastify"; import * as config from "../config/config.js"; +import { disablePolylineEvents, enablePolylineEvents } from "./setupPolylines"; // Importiere die Funktion zum Deaktivieren der Polyline-Ereignisse // Funktion zum Bestimmen der Priorität basierend auf dem Icon-Pfad const determinePriority = (iconPath, priorityConfig) => { @@ -29,16 +29,11 @@ export const createAndSetDevices = async (systemId, setMarkersFunction, GisSyste if (jsonResponse.Points && statusResponse.Statis) { const statisMap = new Map(statusResponse.Statis.map((s) => [s.IdLD, s])); let markersData = jsonResponse.Points.filter((station) => station.System === systemId && getIdSystemAndAllowValueMap.get(station.System) === 1).map((station) => { - //console.log("Station: ", station); const statis = statisMap.get(station.IdLD); - //console.log("Statis: ", statis); const iconPath = statis ? `img/icons/${statis.Na}-marker-icon-${station.Icon}.png` : `img/icons/marker-icon-${station.Icon}.png`; const priority = determinePriority(iconPath, priorityConfig); - //console.log("Priority: ", priority); - //console.log("statis.Le: ", statis.Le); const zIndexOffset = 100 * (5 - priority); // Adjusted for simplicity and positive values - //console.log("Z-Index Offset: ", zIndexOffset); const marker = L.marker([station.X, station.Y], { icon: L.icon({ @@ -52,11 +47,27 @@ export const createAndSetDevices = async (systemId, setMarkersFunction, GisSyste zIndexOffset: zIndexOffset, }); + // Deaktiviere Polyline-Ereignisse beim Überfahren des Markers + marker.on("mouseover", function () { + this.openPopup(); + }); + + // Verwende das `contextmenu`-Ereignis für den Rechtsklick + marker.on("contextmenu", function (event) { + if (event && event.preventDefault) { + event.preventDefault(); // Verhindert das Standard-Kontextmenü + } + disablePolylineEvents(window.polylines); + this.openPopup(); + }); + + marker.on("mouseout", function () { + this.closePopup(); + }); + // Überprüfe, ob die bounce-Funktion verfügbar ist und verwende sie if (typeof marker.bounce === "function" && statis) { marker.on("add", () => marker.bounce(3)); - } else if (statis) { - //console.error("Bounce function is not available on marker"); } const statusInfo = statusResponse.Statis.filter((status) => status.IdLD === station.IdLD) @@ -87,6 +98,6 @@ export const createAndSetDevices = async (systemId, setMarkersFunction, GisSyste setMarkersFunction(markersData); } } catch (error) { - //console.error("Error fetching data: ", error); + console.error("Error fetching data: ", error); } };