Routen-Vorschau: echtes Karten-PNG (Basemap+Route) statt nackter SVG-Form
In der Routenliste fehlte der geografische Kontext — man sah nur die Routen- form auf grünem Grund, nicht WO sie liegt oder wo sie entlangführt. Lösung: UI.map.snapshot() rendert pro Track ein PNG aus EINEM geteilten Offscreen-GL-Kontext (gleicher Style wie die echte Karte: Straßen, Orte, Wald, Gewässer), zeichnet Route + Start/Ziel-Marker ein und cached das Ergebnis. So bekommt jede Karte ihren Kontext, ohne bei vielen Listen- einträgen das WebGL-Kontextlimit (iOS ~8) zu sprengen. - ui.js: Offscreen-Singleton + serielle Render-Queue + Cache (_glSnapshot) - routes.js: _buildMiniMap zeigt sofort SVG, upgradet dann aufs PNG - GL aus → null → SVG-Platzhalter bleibt (Produktion/Flag aus unverändert)
This commit is contained in:
parent
a0d16ba800
commit
1defeec537
7 changed files with 115 additions and 18 deletions
|
|
@ -1566,11 +1566,21 @@ window.Page_routes = (() => {
|
|||
init();
|
||||
}
|
||||
|
||||
// Mini-Vorschau: SVG-Routenform (keine eigene Karte → kein WebGL-Kontext-Limit bei vielen
|
||||
// Listeneinträgen, kein OSM-Raster). Die Detail-/Navigations-Karten sind voll GL.
|
||||
// Mini-Vorschau: zuerst sofort die SVG-Routenform (kein Warten), dann — sobald
|
||||
// gerendert — auf ein echtes Karten-PNG (Basemap + Route) upgraden. Das PNG kommt
|
||||
// aus EINEM geteilten Offscreen-GL-Kontext (UI.map.snapshot, mit Cache), damit viele
|
||||
// Listeneinträge nicht das WebGL-Kontextlimit sprengen. Ist GL aus → SVG bleibt.
|
||||
function _buildMiniMap(el) {
|
||||
const track = JSON.parse(el.dataset.track || '[]');
|
||||
el.innerHTML = _svgPreview(track);
|
||||
if (track.length < 2 || !UI.map.snapshot) return;
|
||||
UI.map.snapshot(track, { key: 'r' + (el.dataset.id || '') }).then(url => {
|
||||
if (!url || !el.isConnected) return; // GL aus/Fehler → SVG-Platzhalter bleibt
|
||||
el.style.backgroundImage = `url("${url}")`;
|
||||
el.style.backgroundSize = 'cover';
|
||||
el.style.backgroundPosition = 'center';
|
||||
el.innerHTML = ''; // SVG-Platzhalter entfernen (PNG enthält die Route)
|
||||
}).catch(() => {});
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue