Fix: Routen-Aufzeichnung offline — Buttons Abbruch/Start reagieren nicht
L.map() warf ReferenceError wenn Leaflet offline nicht geladen → _openRecOvl() crashte, Event-Listener für #rk-rec-cancel und #rk-rec-startbtn wurden nie angehängt. Fix: - Listener direkt nach appendChild() registrieren (vor jeder async-Operation) - Map-Setup in try/catch; bei fehlendem Leaflet: Offline-Platzhalter im Map-Bereich - _recMap?.setView / _recLocMarker?.setLatLng mit Optional Chaining (null-safe) - SW by-v994, APP_VER 994
This commit is contained in:
parent
0878684402
commit
57192ea010
4 changed files with 29 additions and 16 deletions
|
|
@ -726,24 +726,37 @@ window.Page_routes = (() => {
|
|||
document.body.appendChild(ovl);
|
||||
_recOvl = ovl;
|
||||
|
||||
const pos = _userPos || { lat: 48.1, lon: 11.5 };
|
||||
_recMap = L.map(ovl.querySelector('#rk-rec-map-wrap'), { zoomControl: false, attributionControl: false })
|
||||
.setView([pos.lat, pos.lon], 15);
|
||||
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19 }).addTo(_recMap);
|
||||
_recLocMarker = L.circleMarker([pos.lat, pos.lon], {
|
||||
radius: 8, color: '#fff', weight: 2.5, fillColor: '#3b82f6', fillOpacity: 1
|
||||
}).addTo(_recMap);
|
||||
// Listener sofort nach DOM-Einfügen — nicht nach async-Operationen
|
||||
ovl.querySelector('#rk-rec-cancel').addEventListener('click', () => _closeRecOvlClean());
|
||||
ovl.querySelector('#rk-rec-startbtn').addEventListener('click', _startRecInOvl);
|
||||
|
||||
// Get accurate position
|
||||
// Map-Setup: Leaflet könnte offline fehlen → alles in try/catch
|
||||
const pos = _userPos || { lat: 48.1, lon: 11.5 };
|
||||
try {
|
||||
if (!window.L) throw new Error('Leaflet not loaded');
|
||||
_recMap = L.map(ovl.querySelector('#rk-rec-map-wrap'), { zoomControl: false, attributionControl: false })
|
||||
.setView([pos.lat, pos.lon], 15);
|
||||
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19 }).addTo(_recMap);
|
||||
_recLocMarker = L.circleMarker([pos.lat, pos.lon], {
|
||||
radius: 8, color: '#fff', weight: 2.5, fillColor: '#3b82f6', fillOpacity: 1
|
||||
}).addTo(_recMap);
|
||||
} catch {
|
||||
const mapWrap = ovl.querySelector('#rk-rec-map-wrap');
|
||||
if (mapWrap) mapWrap.innerHTML =
|
||||
`<div style="display:flex;align-items:center;justify-content:center;height:100%;
|
||||
flex-direction:column;gap:8px;color:var(--c-text-secondary);font-size:14px">
|
||||
<span style="font-size:2rem">📡</span>
|
||||
Karte offline nicht verfügbar — GPS läuft trotzdem
|
||||
</div>`;
|
||||
}
|
||||
|
||||
// Genaueren Standort nachladen (best-effort, klappt auch offline via gespeichertem GPS)
|
||||
try {
|
||||
const p = await API.getLocation();
|
||||
_userPos = p;
|
||||
_recMap.setView([p.lat, p.lon], 16);
|
||||
_recLocMarker.setLatLng([p.lat, p.lon]);
|
||||
_recMap?.setView([p.lat, p.lon], 16);
|
||||
_recLocMarker?.setLatLng([p.lat, p.lon]);
|
||||
} catch {}
|
||||
|
||||
ovl.querySelector('#rk-rec-cancel').addEventListener('click', () => _closeRecOvlClean());
|
||||
ovl.querySelector('#rk-rec-startbtn').addEventListener('click', _startRecInOvl);
|
||||
}
|
||||
|
||||
async function _startRecInOvl() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue