From 226a15e8822db8382fe3a7ebfd6a747499f081f7 Mon Sep 17 00:00:00 2001 From: Pepe Ziberi Date: Wed, 22 Jul 2026 20:42:23 +0200 Subject: [PATCH] fix(measure): Messlinie verschwand nach dem Abschliessen (v1.5.9) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ursache: finishMeasure schaltete auf 'select' um → der Reset-Effekt (drawMode !== 'measure') löschte die eben gezeichnete Linie sofort; die Höhen-Labels kamen asynchron danach und blieben, die Linie nicht. - Nach dem Abschliessen bleibt der Mess-Modus aktiv → Linie + Labels + Panel bleiben stehen (Tippen fügt keinen Punkt mehr hinzu, da bereits fertig) - Gemeinsamer clearMeasurement-Helfer: Panel-X und „Neue Messung" räumen jetzt Linie, Marker, Höhen-Labels und Panel vollständig auf - Beenden weiterhin über „Neue Messung" oder Wahl eines anderen Werkzeugs Co-Authored-By: Claude Opus 4.8 (1M context) --- package.json | 2 +- src/components/map/map-view.tsx | 33 +++++++++++++++++++-------------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index cda9b69..e57d568 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lageplan", - "version": "1.5.8", + "version": "1.5.9", "description": "Feuerwehr Lageplan - Krokier-App für Einsatzdokumentation", "private": true, "scripts": { diff --git a/src/components/map/map-view.tsx b/src/components/map/map-view.tsx index 18a491b..91f8318 100644 --- a/src/components/map/map-view.tsx +++ b/src/components/map/map-view.tsx @@ -2141,6 +2141,20 @@ export function MapView({ onDrawModeChangeRef.current?.('select') }, []) + // Messung komplett entfernen (Linie, Marker, Höhen-Labels, Panel, Zustand) + const clearMeasurement = useCallback(() => { + measureMarkersRef.current.forEach(m => m.remove()) + measureMarkersRef.current = [] + measureCoordsRef.current = [] + setMeasurePointCount(0) + setMeasureFinished(false) + setMeasureResult(null) + if (map.current) { + const src = map.current.getSource('measure-line') as maplibregl.GeoJSONSource + if (src) src.setData({ type: 'FeatureCollection', features: [] }) + } + }, []) + // Finish measurement handler const finishMeasure = useCallback(() => { drawingRef.current.isDrawing = false @@ -2152,8 +2166,9 @@ export function MapView({ if (src) src.setData({ type: 'FeatureCollection', features: [] }) } fetchElevationsAndUpdateRef.current() - // Apple-style: auto-return to select mode after finishing measurement - onDrawModeChangeRef.current?.('select') + // WICHTIG: im Mess-Modus bleiben, sonst löscht der Reset-Effekt (drawMode !== 'measure') + // die eben gezeichnete Linie sofort wieder. Der Nutzer beendet über „Neue Messung" + // oder durch Wahl eines anderen Werkzeugs. }, []) return ( @@ -2358,17 +2373,7 @@ export function MapView({ {/* Neue Messung starten */} {drawMode === 'measure' && measureFinished && (