MapLibre: GL als Staging-Default + Feinschliff (Cluster-Zahlen, Theme-Robustheit)
- _useGL: Staging default-AN (Prod aus, ?mapgl=0 überschreibt) → Breitentest - Cluster zeigen ZAHL (point_count) statt Icon (Glyphs vorhanden) - Theme-Wechsel: Wetter-Raster + Rec-Track nach setStyle neu anlegen; Click-Handler nur einmal binden (keine doppelten Popups)
This commit is contained in:
parent
425f99effb
commit
3523a44a0b
7 changed files with 55 additions and 32 deletions
|
|
@ -422,6 +422,8 @@ window.Page_map = (() => {
|
|||
let _radarTimer = null;
|
||||
let _tempLayer = null;
|
||||
let _tempActive = false;
|
||||
let _tempUrl = null; // GL: zum Re-Add nach Theme-Wechsel (setStyle löscht Raster-Layer)
|
||||
let _tempMaxZoom = 18;
|
||||
let _tempMarkers = [];
|
||||
let _tempDebounce = null;
|
||||
|
||||
|
|
@ -466,7 +468,8 @@ window.Page_map = (() => {
|
|||
btn?.classList.add('active');
|
||||
try {
|
||||
const cfg = await API.get('/weather/layer-tiles?layer=temp_new');
|
||||
_tempLayer = _wxAddRaster('temp', cfg.url, 1.0, cfg.maxNativeZoom ?? 18);
|
||||
_tempUrl = cfg.url; _tempMaxZoom = cfg.maxNativeZoom ?? 18;
|
||||
_tempLayer = _wxAddRaster('temp', _tempUrl, 1.0, _tempMaxZoom);
|
||||
_showTempLegend();
|
||||
_mapOnMove(_debounceTempLabels);
|
||||
await _loadTempLabels();
|
||||
|
|
@ -650,12 +653,16 @@ window.Page_map = (() => {
|
|||
// MapLibre-GL-Engine (zentrale Karte) — GPU/Worker, performant.
|
||||
// Flag-gated; Raster-Leaflet bleibt Default. [lng,lat]-Reihenfolge!
|
||||
// ==========================================================
|
||||
// Flag: ?mapgl=1/0 → localStorage 'by_map_gl'. Default AUS (bis vollständig portiert).
|
||||
// Flag: ?mapgl=1/0 → localStorage 'by_map_gl'. Default: auf Staging AN (Breitentest),
|
||||
// auf Produktion AUS (bis Freigabe). Explizit per Flag überschreibbar.
|
||||
function _useGL() {
|
||||
try {
|
||||
const u = new URLSearchParams(location.search);
|
||||
if (u.has('mapgl')) localStorage.setItem('by_map_gl', u.get('mapgl') === '0' ? '0' : '1');
|
||||
return localStorage.getItem('by_map_gl') === '1';
|
||||
const flag = localStorage.getItem('by_map_gl');
|
||||
if (flag === '1') return true;
|
||||
if (flag === '0') return false;
|
||||
return /(^|\.)staging\.banyaro\.app$/.test(location.hostname);
|
||||
} catch (e) { return false; }
|
||||
}
|
||||
|
||||
|
|
@ -808,9 +815,14 @@ window.Page_map = (() => {
|
|||
_glLayersReady = false;
|
||||
_map.setStyle(MapGLStyle.build({ dark: _isDarkMode() }));
|
||||
// setStyle entfernt eigene Sources/Layer → nach Style-Load neu anlegen + Daten neu setzen.
|
||||
// (DOM-basierte maplibregl.Marker — Standort/Temp-Pillen/Rec-Dot — überleben setStyle.)
|
||||
_map.once('styledata', () => {
|
||||
_initPoiLayersGL();
|
||||
Object.keys(TYPEN).forEach(_glPushLayer);
|
||||
// Wetter-Raster + Rec-Track waren Style-Layer → neu anlegen, falls aktiv.
|
||||
if (_radarActive) _loadRadar();
|
||||
if (_tempActive && _tempUrl) _tempLayer = _wxAddRaster('temp', _tempUrl, 1.0, _tempMaxZoom);
|
||||
if (_recActive && _recTrack.length) _recTrackGL();
|
||||
_scheduleOsmLoad();
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue