3.1 KiB
3.1 KiB
CoordinateInput.js
Die Komponente CoordinateInput stellt ein einfaches Eingabefeld für geografische Koordinaten
(Latitude, Longitude) bereit.
Sie dient typischerweise dazu, einen bestimmten Punkt auf der Karte zu fokussieren bzw. zu
markieren.
🔧 Pfad
/components/uiWidgets/CoordinateInput.js
🎯 Zweck
- Eingabe von Koordinaten (z. B.
53.2,8.1) - Übergabe dieser Koordinaten an eine Callback-Funktion zur weiteren Verarbeitung
- Positioniert sich dauerhaft in der linken oberen Ecke der Seite (z. B. zur schnellen Navigation)
⚙️ Props
| Prop | Typ | Beschreibung |
|---|---|---|
onCoordinatesSubmit |
function |
Wird beim Abschicken des Formulars mit dem eingegebenen Koordinaten-String aufgerufen |
🧩 Interne Logik
const [coordinates, setCoordinates] = useState("");
- Der Eingabewert wird im lokalen State gespeichert
- Beim Submit (
onSubmit) wirdonCoordinatesSubmit(coordinates)aufgerufen, wenn gesetzt
🧰 UI-Aufbau
- Eingabefeld für Text: Erwartet
lat,lng - Button: „Zu Marker zoomen“
- Position:
fixed top-5 left-5→ dauerhaft sichtbar
🎨 Gestaltung (Tailwind CSS)
| Element | Klassen |
|---|---|
| Container | fixed top-5 left-5 z-50 bg-white shadow-lg rounded-lg p-4 w-72 |
| Input | border p-2 rounded w-full mb-2 |
| Button | bg-blue-500 text-white p-2 rounded w-full hover:bg-blue-600 |
🧪 Testfälle
| Eingabe | Erwartung |
|---|---|
53.2,8.1 |
Callback onCoordinatesSubmit("53.2,8.1") wird ausgelöst |
| Leer | Callback wird ausgelöst mit leerem String |
| Buttonklick | Löst handleSubmit() aus |
| Enter-Taste im Eingabefeld | Löst ebenfalls Submit aus |
💡 Erweiterungsideen
- Validierung des Formats (
lat,lng) vor dem Absenden - Automatisches Zentrieren der Leaflet-Karte in der Callback-Funktion
- Optionale Markierung des Punkts auf der Karte
📄 Verwendung
Beispiel in einer Map-Komponente:
<CoordinateInput
onCoordinatesSubmit={coords => {
const [lat, lng] = coords.split(",").map(Number);
map.setView([lat, lng], 16); // Leaflet
}}
/>
📦 Verwandte Komponenten
MapComponent.js– kann die übergebenen Koordinaten zur Zentrierung oder Marker-Erstellung nutzen
