docs
This commit is contained in:
71
docs/components/mainComponent/MapComponent.md
Normal file
71
docs/components/mainComponent/MapComponent.md
Normal file
@@ -0,0 +1,71 @@
|
||||
<!-- /docs/components/mainComponent/MapComponent.md -->
|
||||
|
||||
# 🗺️ MapComponent.js
|
||||
|
||||
Die zentrale React-Komponente zur Darstellung und Steuerung der Leaflet-Karte.
|
||||
Bindet alle Marker, Layer, POIs, Linien und das Kontextmenü dynamisch ein.
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Zweck
|
||||
|
||||
- Initialisiert die Leaflet-Karte (`useInitializeMap`)
|
||||
- Bindet Marker & Polylinien über Redux und eigene Hooks
|
||||
- Steuerung über Redux-Slices wie `selectedArea`, `zoomTrigger`, `polylineVisible`
|
||||
- Kontextmenüs für Karte, POIs, Polylinien
|
||||
- Unterstützung für Editierfunktionen über `editMode` (localStorage)
|
||||
|
||||
---
|
||||
|
||||
## 🧱 Hauptbestandteile
|
||||
|
||||
- `useEffect`-Hooks zum Laden und Aktualisieren von:
|
||||
- Kartenlayern, POIs, Linien, Rechte, Systeme, Positionen
|
||||
- Marker-Logik für 15+ Layergruppen (TALAS, ECI, GMA, etc.)
|
||||
- Marker-Overlapping mit `OverlappingMarkerSpiderfier`
|
||||
- Kontextmenüs (Karte & Polylinie)
|
||||
- UI-Komponenten:
|
||||
- `MapLayersControlPanel`
|
||||
- `CoordinateInput`
|
||||
- `CoordinatePopup`
|
||||
- `AddPOIModal`, `PoiUpdateModal`, `VersionInfoModal`
|
||||
|
||||
---
|
||||
|
||||
## 🧠 Zustand & Redux
|
||||
|
||||
Verwendet umfangreiche Redux-Slices zur Steuerung von:
|
||||
|
||||
- Linienstatus, POI-Typen, POI-Icons
|
||||
- Gerätesysteme & Rechte
|
||||
- Sichtbarkeit einzelner Layergruppen
|
||||
- Aktuelle Selektion (Area, Gerät, POI)
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Lokale Steuerung
|
||||
|
||||
- EditMode wird aus `localStorage` gelesen
|
||||
- Karte speichert Zoom & Center dauerhaft im Browser
|
||||
- Kontextmenü-Einträge ändern sich je nach Rechten & Modus
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Besonderheiten
|
||||
|
||||
- Fehlerbehandlung für `contextmenu`-Fehler eingebaut → Auto-Neuladen
|
||||
- Alle Marker-Updates mit Overlapping-Check & Z-Index-Steuerung
|
||||
- Linien enthalten dynamische Tooltips mit `tooltipContents`
|
||||
- Initiale Datenabfrage über Redux-Thunk-Kaskade
|
||||
|
||||
---
|
||||
|
||||
## 🔗 Abhängigkeiten
|
||||
|
||||
- Leaflet, OverlappingMarkerSpiderfier, React-Toastify
|
||||
- Redux Toolkit (Thunks + Selectors)
|
||||
- Tailwind CSS für visuelles Layout
|
||||
|
||||
---
|
||||
|
||||
📄 Pfad: `/components/mainComponent/MapComponent.js`
|
||||
53
docs/components/mainComponent/hooks/useInitializeMap.md
Normal file
53
docs/components/mainComponent/hooks/useInitializeMap.md
Normal file
@@ -0,0 +1,53 @@
|
||||
<!-- /docs/components/mainComponent/hooks/useInitializeMap.md -->
|
||||
|
||||
# 🪄 useInitializeMap.js
|
||||
|
||||
Custom React-Hook zur Initialisierung der Leaflet-Karte.
|
||||
Ermöglicht die einfache Übergabe aller nötigen Parameter und abstrahiert die `initializeMap(...)`-Logik.
|
||||
|
||||
---
|
||||
|
||||
## 📦 Zweck
|
||||
|
||||
- Führt `initializeMap(...)` nur **einmal** aus, wenn `mapRef` existiert und `map === null`
|
||||
- Kapselt die Initialisierung in ein `useEffect`
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Parameter
|
||||
|
||||
| Name | Typ | Beschreibung |
|
||||
|--------------------------|------------|---------------------------------------------------|
|
||||
| `map` | `LeafletMap` (Zustand) | Wird initialisiert, wenn `null` |
|
||||
| `mapRef` | `ref` | Referenz auf `<div id="map">` |
|
||||
| `setMap` | `function` | Callback zum Setzen der Karteninstanz |
|
||||
| `setOms` | `function` | Callback für OverlappingMarkerSpiderfier |
|
||||
| `setMenuItemAdded` | `function` | Wird genutzt, um mehrfaches Menü-Setup zu verhindern |
|
||||
| `addItemsToMapContextMenu` | `function` | Logik zum Hinzufügen von Kontextmenüeinträgen |
|
||||
| `hasRights` | `boolean` | Steuerung, ob POI-Menüs angezeigt werden dürfen |
|
||||
| `setPolylineEventsDisabled` | `function` | Aktiviert/Deaktiviert Polyline-Events global |
|
||||
|
||||
---
|
||||
|
||||
## 🌐 Verwendung
|
||||
|
||||
In `MapComponent.js`:
|
||||
|
||||
```js
|
||||
useInitializeMap(
|
||||
map,
|
||||
mapRef,
|
||||
setMap,
|
||||
setOms,
|
||||
setMenuItemAdded,
|
||||
addItemsToMapContextMenu,
|
||||
hasRights,
|
||||
(value) => dispatch(setDisabled(value))
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📁 Quelle
|
||||
|
||||
Wrappt `initializeMap()` aus `/utils/initializeMap.js`
|
||||
Reference in New Issue
Block a user