Skip to content

Fix: Größere Berührfläche im Objekt-Drehmodus#12

Draft
tordans wants to merge 1 commit into
masterfrom
cursor/rotate-object-touch-area-c13b
Draft

Fix: Größere Berührfläche im Objekt-Drehmodus#12
tordans wants to merge 1 commit into
masterfrom
cursor/rotate-object-touch-area-c13b

Conversation

@tordans
Copy link
Copy Markdown
Owner

@tordans tordans commented May 31, 2026

Problem (User Story)

Als OpenStreetMap-Editor:in in Go Map
möchte ich ein ausgewähltes Objekt im Drehmodus über die gesamte Kartenfläche drehen können,
damit ich nicht mit den Fingern auf eine kleine cyanfarbene Fläche zielen muss und das Drehen zuverlässig funktioniert.

Aktuelles Verhalten: Im Drehmodus ist die effektive Berührfläche für die Drehgeste sehr klein (visuell nur ein schmaler Bogen um das Objekt). Fingerbewegungen auf dem Display lösen oft kein Drehen aus — stattdessen wird die Karte verschoben oder andere Gesten übernehmen.

Gewünschtes Verhalten: Im Drehmodus soll die gesamte Kartenansicht (mindestens die volle MapView) das Drehen auslösen — per Ein-Finger-Wischen oder Zwei-Finger-Drehung.


Implementation Notes (by Cursor)

  • Konkurrierende Gesten deaktivieren: Während isRotateObjectMode aktiv ist, werden Karten-Pan und Bildschirm-Rotation in MainViewController abgeschaltet (setObjectRotationModeActive). Pinch war bereits gesperrt; Tap-and-Drag ebenfalls.
  • Ein-Finger-Drehung auf der ganzen Karte: Neuer UIPanGestureRecognizer (maximumNumberOfTouches = 1) auf MapView, der den Winkel zwischen Berührungspunkt und Objektmittelpunkt berechnet und EditorMapLayer.rotateContinue mit normalisiertem Winkel-Delta aufruft.
  • Zwei-Finger-Drehung: rotationGesture.rotation wird nach jedem Frame auf 0 zurückgesetzt (inkrementelle Deltas wie bei der Kartenrotation), damit die Drehung nicht springt.
  • Dateien: src/Shared/MapView.swift, src/iOS/MainViewController.swift

Testing Notes (by @tordans)

  • Weg oder Multipolygon auswählen → Bearbeiten → Drehen aktivieren
  • Ein Finger: Irgendwo auf der Karte (nicht nur am cyan Bogen) kreisförmig wischen → Objekt dreht sich um seinen Mittelpunkt
  • Zwei Finger: Rotation auf verschiedenen Kartenbereichen (Mitte, Rand, oben/unten)
  • Während des Drehmodus: Karte soll sich nicht mit einem Finger verschieben (Pan deaktiviert)
  • Nach Beenden der Geste: Drehmodus verlässt sich wie bisher (Pin erscheint wieder)
  • Kurzer Tap auf die Karte beendet den Drehmodus weiterhin
  • Optional: Mac Catalyst / Trackpad mit zwei Fingern
  • Regression: normales Pan/Zoom/ Kartenrotation außerhalb des Drehmodus unverändert
Open in Web Open in Cursor 

Disable map pan and screen rotation while rotating a selected object so
two-finger rotation is not stolen by competing gestures. Add a single-finger
pan gesture that rotates around the object center anywhere on the map view.
Reset per-frame rotation delta for two-finger object rotation.

Co-authored-by: Tobias <t@tobiasjordans.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants