lib/maptool/overpass_pois.rb: queries Overpass for drinking water, dump stations, LPG refill, toilets, laundromats, supermarkets/ convenience stores, and springs within a bbox, writes GeoJSON. A dev-time tool (like the offline.pmtiles/terrain.pmtiles generation steps already documented) — not called by the running app, drop the output into data/gpx/ or upload it through the Tracks panel like any other .geojson layer. Verified against the real Overpass API (88 POIs for central Bratislava) in addition to the new unit tests (pure to_geojson/ build_query logic, no network in the suite itself). Full suite: 103 runs, 0 failures.
5.2 KiB
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.pmtilesfor 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.geojsonto drop indata/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-relieflayer (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") — click the map, pick or name a
.geojsonlayer, saved into the same GpxStore the Tracks panel already reads (so visibility/popup come for free)-
❏ Polygon notes (not just points) — needs gpx.js’s point/line split (
_addLayers) taught a third, Polygon-shaped bucket first, or a saved polygon wouldn’t render back on reload
-
-
❏ 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