Routen: Detail/Vorschlag-Zoom robust (ResizeObserver) + Navi-Sperrbildschirm nur per Fingerabdruck
Punkt 3 (Zoom auf die Route): feste Timeouts (0/200/500ms) griffen auf iOS oft zu früh — der Modal-Container war noch nicht final vermessen, die Karte blieb beim Start-Zoom (zoom 14, center=Start) hängen statt auf die ganze Route zu zoomen. Jetzt _fitRouteMap mit ResizeObserver: fittet erneut, SOBALD der Container seine endgültige Größe hat (Detail + Vorschläge). Facade-fitBounds prüft jetzt auch clientHeight>0 (0-Höhe ergab schlechten Fit). Punkt 5 (Navigations-Sperrbildschirm): der 2-Sek-Halten-Handler hing am ganzen Dim-Overlay → Halten IRGENDWO entsperrte. Jetzt ein eigener Fingerabdruck-Knopf (rk-nav-unlock-btn) wie beim Aufzeichnen-Dim; nur dort entsperrt es, mit setPointerCapture. Tippen daneben tut bewusst nichts. Verifiziert (headless): Detail fittet die ganze Route (v1204, 0 Fehler); Dim-Hintergrund 2,2s halten → bleibt gesperrt, Knopf 2,2s halten → entsperrt.
This commit is contained in:
parent
285928f6f7
commit
d203ab17a8
7 changed files with 69 additions and 36 deletions
|
|
@ -28,7 +28,8 @@
|
|||
// Nur fitten wenn Bounds gültig UND der Container eine Größe hat (im Modal
|
||||
// ist er beim Erstellen 0×0 → fitBounds würde NaN werfen; der Re-Fit nach
|
||||
// Modal-Animation greift dann).
|
||||
if (bb && !isNaN(bb.getWest()) && map.getContainer().clientWidth > 0) {
|
||||
var _c = map.getContainer();
|
||||
if (bb && !isNaN(bb.getWest()) && _c.clientWidth > 0 && _c.clientHeight > 0) {
|
||||
var pad = 30;
|
||||
if (opts && opts.padding) pad = Array.isArray(opts.padding) ? opts.padding[0] : opts.padding;
|
||||
try { map.fitBounds(bb, { padding: pad, maxZoom: opts && opts.maxZoom, duration: 0 }); } catch (e) {}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue