Offline-Plan: Referenz-Radius 10→5 km (gemessen 6,4 MB Stadt / 2,6 MB Land), Budget ~7 MB
This commit is contained in:
parent
daa44946f1
commit
d1e44ebfb9
1 changed files with 16 additions and 9 deletions
|
|
@ -16,15 +16,21 @@ Selbst-zielend (cacht wo nötig, nicht überall), speichersparsam, ohne Nutzerau
|
|||
- Folge offline heute: App + Daten da, aber GL-Karte = Routenlinie/Marker auf **leerem Hintergrund**.
|
||||
|
||||
## Gemessene Speicher-Fakten (an echter dach.pmtiles, maxzoom=14 + Overzoom bis ~16)
|
||||
**Referenz-Radius = 5 km** (René, 2026-06-05: „5 km genügen"). Messungen:
|
||||
| Gebiet | Fläche | Tiles | Größe |
|
||||
|---|---|---|---|
|
||||
| München (48,1/11,5), dicht | 20×20 km (10 km Radius) | 252 | **15 MB** |
|
||||
| Bayerischer Wald, ländlich | 20×20 km | 285 | **4,4 MB** |
|
||||
| Bayerischer Wald, ländlich | 50×50 km (~25 km Radius) | 1.595 | **20 MB** |
|
||||
| **München (48,1/11,5), dicht — 5 km** | 10×10 km | 82 | **6,4 MB** |
|
||||
| **Bayerischer Wald, ländlich — 5 km** | 10×10 km | 99 | **2,6 MB** |
|
||||
| (Kontext) München 10 km | 20×20 km | 252 | 15 MB |
|
||||
| (Kontext) Bayerischer Wald 10 km | 20×20 km | 285 | 4,4 MB |
|
||||
| (Kontext) Bayerischer Wald ~25 km | 50×50 km | 1.595 | 20 MB |
|
||||
|
||||
→ Vektor ist ~10× sparsamer als Raster (Raster 10 km ≈ 100–300 MB). Stadt-Tiles ~3,4× dicker als Land.
|
||||
→ **Budget ≈ 16 MB** deckt in der Stadt ~10 km, auf dem **Land ~18–22 km** Radius ab (mehr Reichweite
|
||||
genau dort wo die Funklöcher sind). Glyphs (~1–2 MB) + Style (winzig) obendrauf → ~17 MB pro Gegend.
|
||||
→ Vektor ist ~10× sparsamer als Raster (Raster 5 km ≈ 40–120 MB). Stadt-Tiles ~2,5× dicker als Land.
|
||||
→ 5 km ist NICHT 1/4 von 10 km (6,4 vs 15 MB) — die unteren Zoomstufen (Übersicht) sind immer dabei,
|
||||
unabhängig von der bbox-Größe.
|
||||
→ **Budget ≈ 7 MB** (5 km dichte Stadt + Glyphs). Budget-getrieben deckt das in der Stadt ~5 km, auf dem
|
||||
**Land ~8–10 km** Radius ab (mehr Reichweite genau dort wo die Funklöcher sind). Glyphs (~1–2 MB) +
|
||||
Style (winzig) → ~8 MB pro Gegend. Sehr sparsam → viele Gegenden problemlos (10 ≈ 80 MB).
|
||||
→ Messmethode (reproduzierbar): `docker run --rm -v /tmp/pmt:/out protomaps/go-pmtiles:latest extract
|
||||
https://staging.banyaro.app/tiles/dach.pmtiles /out/x.pmtiles --bbox=W,S,E,N` → Dateigröße ablesen.
|
||||
|
||||
|
|
@ -32,9 +38,9 @@ Selbst-zielend (cacht wo nötig, nicht überall), speichersparsam, ohne Nutzerau
|
|||
### Region-Extract (budget-getrieben, NICHT fester Radius)
|
||||
- PMTiles-**Directory enthält pro Tile die Byte-Länge** → Server kann die Größe einer Region
|
||||
**aufsummieren OHNE die Tiles zu laden**.
|
||||
- Endpoint `GET /tiles/region?lat=&lon=&budget=16` (MB): wächst die bbox um die Position, bis die
|
||||
- Endpoint `GET /tiles/region?lat=&lon=&budget=7` (MB): wächst die bbox um die Position, bis die
|
||||
summierte Tile-Länge ≈ Budget erreicht (Stadt → kleiner Radius, Land → großer Radius), extrahiert dann
|
||||
genau diese Region als `region.pmtiles` (**ein 200er**, ~16 MB). `pmtiles extract` (go-pmtiles) oder
|
||||
genau diese Region als `region.pmtiles` (**ein 200er**, ~7 MB). `pmtiles extract` (go-pmtiles) oder
|
||||
python-pmtiles im Container.
|
||||
- Client lädt die Datei einmal → **IndexedDB** (Blob; 200er, anders als die 206-Ranges cachebar).
|
||||
- MapLibre liest **offline** aus dem lokalen Blob via `pmtiles://` (pmtiles.js kann aus ArrayBuffer lesen);
|
||||
|
|
@ -59,7 +65,8 @@ Selbst-zielend (cacht wo nötig, nicht überall), speichersparsam, ohne Nutzerau
|
|||
- **Aufräumen:** Den alten OSM-Raster-Prefetch in `offline-indicator.js` ablösen/abschalten (cacht ungenutztes Raster).
|
||||
|
||||
## Offene Entscheidungen / Defaults
|
||||
- Budget-Default **16 MB**, optional Stufe „Groß 40 MB" (Stadt ~16 km / Land ~30+ km) für Wandertage.
|
||||
- Budget-Default **~7 MB** (Referenz 5 km Stadt; René 2026-06-05). Stadt ~5 km / Land ~8–10 km.
|
||||
Optional Stufe „Groß ~16 MB" (Stadt ~10 km / Land ~18–22 km) für Wandertage.
|
||||
- Zoom z0–14 (Overzoom liefert Straßenebene gratis).
|
||||
- Detektionssignal = echte Fetch-Timeouts bei aktivem GPS (nicht `navigator.onLine`).
|
||||
- Speicher = IndexedDB (Blobs); MapLibre-Source-Umschaltung online/offline.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue