A real-life version of the map-pin scope from The Legend of Zelda: Breath of the Wild.
Aim your phone's camera at a distant mountain, ridge, or landmark and tap — the app figures out what you're looking at and drops a GPS pin on it, photo attached. No rangefinder hardware: it ray-casts your position, compass heading, and camera pitch against real terrain elevation data until the sight line meets the ground.
- Scope — live camera viewfinder with a reticle HUD showing heading, pitch, and live distance-to-target; tap to mark a waypoint with the photo.
- Map — waypoints on topo/satellite basemaps with a layer picker, follow-me lock, and drag-to-adjust pins.
- 3D terrain — tiltable 3D topographic view of your waypoints (MapLibre GL), with topo/satellite draped over the terrain.
- Offline — recently viewed map areas cache automatically; download full regions (map + elevation tiles) for use with no signal. GPS, marking, and navigation all work offline inside downloaded regions.
- Compass calibration — sight a known landmark once to measure and correct your phone's compass bias, fully offline.
- CalTopo export — send any waypoint to CalTopo as GeoJSON via the share sheet.
Expo (React Native, TypeScript) targeting Expo Go on iOS. Pure-JS terrain math (geodesy, slippy-tile sampling, ray-marching with Earth-curvature/refraction correction) with a Jest test suite.
npm install
npx expo start # scan the QR with Expo Go
npm test # geodesy / elevation / raycast test suite
npx tsc --noEmit- Elevation: Terrain Tiles on AWS (Mapzen/Tilezen Terrarium)
- Basemaps: USGS The National Map (public domain), OpenTopoMap (CC-BY-SA, © OpenStreetMap contributors)
- 3D view: MapLibre GL JS, OpenFreeMap