Dashmap

August 7, 2026 ยท View on GitHub

A live 3D world-map demo built on flutter_scene. Fly over real terrain streamed from open data, with satellite imagery draped on the surface, extruded OpenStreetMap buildings in cities, and a physical sky whose sun drives the lighting and shadows. Zoom out far enough and the flat map wraps onto the whole planet.

Features

  • Streaming terrain with quadtree level of detail, refined by screen-space error, built from live terrain-RGB elevation tiles with satellite imagery draped on top.
  • A globe: the Web Mercator world wraps onto a sphere in the vertex stage, so the same scene reads correctly from street level to planetary altitude.
  • Extruded OSM building footprints near the ground, grounded on the terrain, batched per tile.
  • Physical-atmosphere sky driving image-based lighting, sun light, and cascaded shadows; altitude-scaled fog dissolves the far ground into the sky.
  • Fuzzy city search (Photon) with an eased fly-to.
  • A settings panel covering the sun, atmosphere, fog, shadows, ambient occlusion, post-processing, building material, and camera feel, with a print button that dumps the current values.
  • All downloaded data (terrain, imagery, buildings) persists in a local disk cache; a prefetcher bulk-downloads whole city areas (Tokyo and Boston presets included).

Running

Requires the Flutter master channel (flutter_scene needs Flutter GPU / Impeller).

# macOS (desktop dev)
flutter run -d macos --enable-flutter-gpu --enable-impeller

The app makes live HTTP requests for map tiles. Controls: drag or two-finger scroll to orbit, pinch or mouse wheel to zoom, shift-drag to pan, WASD/arrows to fly.

Tests

flutter test

The geodesy and streaming math is pure Dart (no GPU): Web Mercator round-trips, terrain-RGB decoding, heightfield and building mesh builders, quadtree selection, horizon culling, and camera behavior are all covered.

Data sources, licensing, and attribution

Dashmap's code is MIT licensed (see LICENSE). The map data it downloads at runtime comes from third-party services with their own terms, and the on-screen attribution lines are part of complying with them; keep them visible in derived work.

  • Elevation comes from the AWS Open Data terrain tiles (Terrarium encoding), sourced from Mapzen, USGS, and other providers listed in the dataset attribution.
  • Imagery comes from Esri World Imagery, (c) Esri, Maxar, Earthstar Geographics, and the GIS user community, under the Esri terms of use.
  • Building footprints come from OpenStreetMap via the Overpass API, (c) OpenStreetMap contributors, licensed under the ODbL. Locally cached and prefetched building data is a derivative database of OSM and remains under the ODbL.
  • City search is powered by Photon by komoot, also built on OpenStreetMap data.

Overpass and Photon are free community services; the app paces and caches its requests, and bulk downloads should stay considerate of their capacity.