Files
maptool/TODO.adoc
T
randy aafb4cb4a0
CI / check (push) Successful in 39s
CI / deploy (push) Successful in 13s
Consolidate note-drawing into Measure; add edit/delete
Measure already draws distance lines and area polygons by hand — a
second click-to-draw UI in the notes tool (Point/Area mode, from the
previous commit) duplicated that. Replaced it with a "Save as note"
button on the Measure panel that saves whatever shape is currently
drawn there; NotesControl goes back to being just a one-click point
pin. Both share a single NoteSaveForm (notes.js) for the note-text +
target-layer-file UI instead of two copies of it.

gpx.js: the "lines" source now also renders a note-flagged LineString
(dashed, popup-on-click) alongside the Polygon fill/outline from
before — the plain track-line layer excludes category:"Note" features
so a saved distance note doesn't also get the track hover-summary/
profile-panel treatment.

Notes are now individually editable/deletable from their own popup
(logged-in only): Edit swaps the popup content for an inline
textarea, Delete confirms and removes. Both target the feature by a
new client-generated properties.id rather than array position (new
GpxStore#update_feature/#delete_feature, PUT/DELETE /api/gpx/notes),
since neither array index nor the note's own text (the thing being
edited) is a stable identifier.

Verified live: Measure's Save button (disabled/enabled state, saves
the exact on-screen shape), the popup's Edit/Delete buttons and inline
edit form. Full test suite: 115 runs, 0 failures (new coverage for
update_feature/delete_feature and the PUT/DELETE routes).
2026-09-09 11:39:36 +02:00

5.8 KiB
Raw Blame History

TODO — implementation ideas

Ideas for offline use in a camper van. Implement incrementally, grouped by topic.

The local server has access to both the vehicle’s hardware and offline data — the vision is to grow it into a complete offline control center: resources, data, and independence from connectivity.

Offline data and cartography

  • ❏ Offline vector tiles (PMTiles/MBTiles) for Europe/world via Planetiler or MapTiler

  • ✓ Shaded relief / DEM layer — hillshade toggle in the sidebar, sourced from public Terrarium tiles online; reads data/terrain.pmtiles for offline if one’s been generated (see docs/development.adoc), otherwise the toggle is online-only for now

    • ❏ Terrain slope readout for parking (numeric, not just visual shading)

  • ❏ Contour lines from OSM for hikes and mountain passes

  • ✓ Overpass/OSM scripts to extract POIs (drinking water, dump stations, LPG, public toilets, laundromats, shops, springs) — rake overpass:pois, see docs/development.adoc; writes a .geojson to drop in data/gpx/ or upload, not called by the running app itself

  • ❏ Import Park4Night / iOverlander / Freecampsites data

  • ❏ Kiwix/ZIM offline Wikipedia linked to POI GPS coordinates

  • ✓ Cache weather forecast when temporarily connected — Open-Meteo 3-day forecast in the Radar flyout, last successful fetch cached in localStorage as a fallback when offline

    • ✓ Cache the radar tile images too — public/sw.js, network-falling-back-to-cache for RainViewer tile requests, registered from layout.erb

NPS visual style

  • ❏ Map Park4Night/OSM place types to NPS pictograms (campground, primitive camp, drinking water, dump station, viewpoint, picnic table) for instant recognition without reading text

  • ❏ Restyle popovers, side panels, and point detail views after the NPS Unigrid layout system (Massimo Vignelli) with Frutiger/Rawlinson Roadside-style typography

    • ✓ Top black banner (full width): "MAPTOOL" on the left, live map-center coordinates in the center, offline-data status dot on the right, white sans-serif type — DEM elevation and a hamburger menu skipped (no DEM layer yet; sidebar isn’t mobile-collapsed, so nothing for a hamburger to reveal)

    • ❏ Point detail/sidepanel: black header banner with white location name and an NPS pictogram in the corner; amenities (water, waste, power, slope) shown as a pictogram grid, no extra text; action buttons for "route here" (Valhalla), "start leveling", "save offline"

    • ✓ Filter panel as a "Unigrid Matrix" — an icon grid to toggle categories on/off, styled like the legend on an official NPS paper map, instead of plain dropdowns

  • ❏ Custom vector style (MVT/MapLibre) using the NPS color palette — muted natural tones for forests, water, and contours — so POIs and routes stand out at high zoom

    • ❏ Landuse & protections: distinct styling for national parks, nature reserves (translucent green/gray-green), military zones, and private land (important for wild camping)

    • ✓ Elevation-tinted terrain — a color-relief layer (hypsometric tint, this app’s own green→brown→gray palette) under the hillshade layer, same "Terrain shading" toggle

    • ✓ Road hierarchy: clearly distinguish paved roads from unpaved/gravel/track — critical for knowing if the camper can get there

Main menu reorganization (4 modules)

  • ❏ Explorer: place filters (Park4Night + OSM layers: water, waste, LPG, showers); map layers (contours, hillshade, satellite cache)

  • ❏ Navigation & route: offline router (Valhalla) with vehicle dimensions (height, weight, width); route elevation profile and isochrones

  • ❏ Offline hub: manager for downloaded PMTiles (country vector maps); downloaded Wikipedia archives; cached radar and weather

  • ❏ Camper & HW: level gauge (wheel-chock leveling); solar calculator (sun path on the map); telemetry (Victron / Home Assistant)

Custom layers & data

  • ✓ GPX/GeoJSON drag-and-drop import (Wikiloc, Komoot, own GPX tracks — also FIT), auto-styled by category with a generated elevation profile — KML not supported (only GPX/FIT/GeoJSON/.zip)

  • ✓ User overlay: offline drawing of custom points with notes (e.g. "turning space for a long vehicle", "narrow gate", "good swimming spot") — one click on the map, pick or name a .geojson layer, saved into the same GpxStore the Tracks panel already reads (so visibility/popup come for free)

    • ✓ Save a distance/area shape as a note too — Measure already draws these by hand, so a "Save" button there (not a second click-to-draw UI in the notes tool) reuses that instead of duplicating it; both share one NoteSaveForm (notes.js). gpx.js’s `_addLayers now renders Polygon and note-flagged LineString features (fill/outline, dashed line), not just points

    • ✓ Edit/delete individual notes from their popup (logged-in only) — targets a feature by a client-generated properties.id (GpxStore#update_feature/#delete_feature), not array position

    • ❏ The Unigrid Matrix category filter only re-slices the points source (_applyCategoryFilter) — toggling the "Note" category off hides point notes but not polygon/line ones sharing that category

  • ❏ Offline satellite tile caching (e.g. ESRI) for a selected route area — key for judging surface quality and obstacles when wild camping

Nice to have (later)

Deprioritized for now — revisit after the sections above land.

Vanlife features

  • ❏ Offline routing (Valhalla/OSRM) with vehicle parameters (height, weight, width)

  • ❏ Solar calculator — sun path for location/date, shadows from surroundings, camper orientation

HW integration

  • ❏ Level gauge from IMU (ESP32/RPi) — camper tilt, wheel-chock leveling calculation

  • ❏ Victron/Home Assistant via MQTT or WebSocket — battery SoC, tank levels, temperatures

  • ❏ Plot GPS track with historical battery/speed data