# 🧭 setupPolylines.js – Polylinien zeichnen und verwalten

## Zweck

Diese Datei enthält die zentrale Funktion `setupPolylines`, die in der Kartenkomponente (Leaflet) Polylinien sowie Marker basierend auf Gerätekonfigurationen zeichnet und verwaltet.

Sie wird verwendet, um:

- Polylinien basierend auf Koordinaten zu zeichnen
- Stützpunkte visuell als Marker anzuzeigen
- Marker kontextsensitiv mit Optionen (z. B. „Stützpunkt entfernen“, „Koordinaten anzeigen“) auszustatten
- Linien aktualisieren und neue Koordinaten in die Datenbank schreiben
- Kontextmenü-Interaktionen zu ermöglichen

---

## Besonderheiten

- Marker mit speziellen Icons (Start, Ende, Zwischenpunkt)
- Interaktivität abhängig vom Bearbeitungsmodus (editMode aus `localStorage`)
- Kontextmenü pro Marker und Linie individuell steuerbar
- API-Aufrufe zur Koordinaten-Aktualisierung:  
  `POST /api/talas_v5_DB/gisLines/updateLineCoordinates`

---

## Dynamische URL mit Port-Steuerung

Die Datei verwendet **keine feste API-Basis-URL** mehr aus `.env.local`.  
Stattdessen wird `NEXT_PUBLIC_API_PORT_MODE` genutzt, um zwischen Entwicklungs- und Produktionsumgebung zu unterscheiden:

```env
NEXT_PUBLIC_API_PORT_MODE=dev
```

### Beispiel im Code:

```js
const mode = process.env.NEXT_PUBLIC_API_PORT_MODE;

const baseUrl =
  mode === "dev"
    ? `${window.location.protocol}//${window.location.hostname}:80/talas5/`
    : `${window.location.origin}/talas5/`;
```

---

## Kontextmenüaktionen

- Station öffnen (neuer Tab)
- Koordinaten anzeigen
- Zoom in/out
- Karte zentrieren
- Stützpunkt hinzufügen/entfernen (wenn editMode)

---

## Speicherorte

- Polylinien und LineColors werden unter `window.polylines` und `window.lineColors` global gespeichert
- Aktive Redux-Slices:
  - `polylineContextMenuSlice`
  - `addPoiOnPolylineSlice`
  - `polylineLayerVisibleSlice`

---

## Siehe auch

- API-Aufruf: `/api/talas_v5_DB/gisLines/updateLineCoordinates`
- `utils/geometryUtils.js`, `poiUtils.js`, `eventHandlers.js`
- `redux/slices/polylineContextMenuSlice.js`

---

📄 Pfad: `/docs/frontend/utils/polylines/setupPolylines.md`