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:
rene 2026-06-05 14:47:15 +02:00
parent 285928f6f7
commit d203ab17a8
7 changed files with 69 additions and 36 deletions

View file

@ -86,14 +86,14 @@
<title>Ban Yaro</title>
<!-- Theme + theme-color Statusleiste vor CSS setzen -->
<script src="/js/boot-early.js?v=1203"></script>
<script src="/js/boot-early.js?v=1204"></script>
<!-- CSS: Reihenfolge ist wichtig — ?v= zwingt Browser zur Neuladung -->
<link rel="stylesheet" href="/css/design-system.css?v=1203">
<link rel="stylesheet" href="/css/layout.css?v=1203">
<link rel="stylesheet" href="/css/components.css?v=1203">
<link rel="stylesheet" href="/css/utilities.css?v=1203">
<link rel="stylesheet" href="/css/lists.css?v=1203">
<link rel="stylesheet" href="/css/design-system.css?v=1204">
<link rel="stylesheet" href="/css/layout.css?v=1204">
<link rel="stylesheet" href="/css/components.css?v=1204">
<link rel="stylesheet" href="/css/utilities.css?v=1204">
<link rel="stylesheet" href="/css/lists.css?v=1204">
</head>
<body>
@ -617,11 +617,11 @@
<div id="modal-container"></div>
<!-- JS: Reihenfolge ist wichtig — erst Basis, dann Features -->
<script src="/js/api.js?v=1203"></script>
<script src="/js/ui.js?v=1203"></script>
<script src="/js/app.js?v=1203"></script>
<script src="/js/worlds.js?v=1203"></script>
<script src="/js/offline-indicator.js?v=1203"></script>
<script src="/js/api.js?v=1204"></script>
<script src="/js/ui.js?v=1204"></script>
<script src="/js/app.js?v=1204"></script>
<script src="/js/worlds.js?v=1204"></script>
<script src="/js/offline-indicator.js?v=1204"></script>
<!-- Feature-Seiten werden lazy geladen -->
@ -631,7 +631,7 @@
<!-- Boot: Offline-Banner + SW-Registration (extrahiert für CSP) -->
<script src="/js/boot.js?v=1203"></script>
<script src="/js/boot.js?v=1204"></script>
</body>