PeakNav

From OpenStreetMap Wiki
Jump to navigation Jump to search
View on OSM Apps Catalog  
PeakNav
v · d 
Author: Francesco Bonazzi
License: GNU GPL (free of charge)
Platforms: Android, iOS, Windows, macOS, and Linux
Status: Active
Version: 1.3.2 (2026-09-21)
Languages:
English, German, Italian, French, Spanish, Portuguese, and Norwegian
Website: https://peaknav.com
Install:
Source code: Upabjojr/PeakNavApp GitHub
Programming language: Java

3D mountain viewer for offline usage.

Keywords: 3D, hiking, skiing, outdoor, map viewer, OSM viewer, OpenStreetMap.

Features
Feature Value
Map Display
Display map yes
Map data raster;vector
Source cache;offline
Rotate map yes
3D view yes
Shows website
?
Shows phone number no
Shows operation hours no
Routing
Routing yes
Create route manually no
Calculate route
?
Create route via Waypoints
?
Routing profiles
?
Turn restrictions
?
Calculate route without Internet (Offline routing)
?
Routing providers
?
Avoid traffic
?
Traffic Provider
?
Navigating
Navigate no
Find location yes
Find nearby POIs yes
Navigate to point yes
Navigation with voice / Voice guidance no
Keep on road no
Lane guidance no
Works without GPS yes
Navigate along predefined route yes
Tracking
?
Monitoring
?
Editing
?
Rendering
?
Accessibility
?
GPX path view
GPX path from Esino Lario to the summit of Grigna Settentrionale mountain, near Lake Como, Italy.
Identification of peak names over a picture with PeakNav app.

PeakNav is an open source app, currently supporting Android, iOS and desktop computers running Windows, macOS or Linux, to view the world's mountains in 3D and display OpenStreetMap data on top of the 3D view, as well as satellite imagery.

The focus of PeakNav is to allow users to download all local data on their devices, so that the app can be used while hiking or skiing even without internet connection.

PeakNav allows peak identification and drapes roads, tracks, paths and ski pistes over the mountains, easing the exploration of routes with a full 3D view of the surrounding area.

Features

Terrain and labels

  • Peak identification — named summits from natural=peak are labelled in the 3D view with their elevation, in metres or feet, including over a photograph taken with the device camera.
  • Place, hut and area labelsplaces, alpine huts, lakes and named areas such as islands, cities, regions and mountain ranges are labelled, appearing at a distance proportional to their size and relevance. A single switch hides or shows every label at once.
  • Offline by design — map and elevation data are downloaded per region and stored on the device; no connection is needed once an area has been fetched. When the view reaches an area with nothing downloaded, the app offers to download it.
  • Satellite imagery — OpenStreetMap data can be overlaid on several satellite and aerial imagery sources instead of the plain shaded relief.
  • Sky — day and night sky rendering with named stars, constellations, the sun and the moon (including eclipses), a celestial grid and the ecliptic, for the time you choose.

Roads, trails and pistes

  • Roads, tracks and trails drawn on the GPUhighways, tracks and paths are drawn by the terrain shader from a distance field, so they stay sharp however close the camera comes and can be restyled without redrawing any tile. Trails are coloured by their SAC scale the way a paper hiking map grades them: yellow for hiking, red for mountain hiking, blue for alpine routes.
  • Names along the way — street names, path names and waymarked route numbers (ref) are written along their own way and de-cluttered so they never overlap; route numbers sit on a plate in the trail's colour, like a waymark.
  • Ski pistes — downhill runs (piste:type=downhill) are painted blue, red or black by piste:difficulty, with a band flowing down the slope and their names along them. The data comes from the OpenSnowMap extract.
  • Ski liftsaerialways are drawn with their carriers moving uphill, each kind its own way: cable cars, gondolas, chairlifts, drag lifts and magic carpets, labelled with their names.
  • PeakNav's own map engine — the tile grid, coordinates and map-data types are written for the app; it no longer depends on Mapsforge. Because the new engine runs on every platform, iOS shows roads and paths too.

Routes and tracks

  • Route to here — tap a point on the terrain and PeakNav finds a walking route to it from where you stand, along the roads, tracks and paths of the downloaded data, entirely offline. Motorways, ways under construction and ways closed to the public (access) are avoided unless foot access is granted. Walking time follows the slope ([{{FULLURL:w:Tobler's hiking function:{{{2}}}}} {{{2}}}] on Wikipedia), so the route prefers the quicker way round a hill over the shorter one across it. The result opens as a GPX track.
  • GPX tracks and tours — recorded tracks can be loaded from a file or a URL and drawn over the terrain, and the camera can fly along a track as a cinematic tour, with a marker showing where along the track it is and a scrub bar to move through it.
  • Track statistics — distance, walking time, ascent and descent, highest and lowest point, a height profile and, for recorded tracks, a speed graph.
  • Save or share a track — a route made in the app, or a track opened from the web, can be saved as a .gpx file or sent through the system share sheet.
  • Orbiting — the camera can orbit around any tapped point, circling a summit or a valley to view it from all sides.
  • Offline place search over GeoNames place names, with no query leaving the device; a half-typed name is enough ("Matterh" finds the Matterhorn).
  • World's well-known mountains — about 7,000 peaks, volcanoes and ranges from Wikidata, with their country, so Everest, Kilimanjaro or Denali can be found by name.
  • Online search through Nominatim, with results in the app's language (see Multilingual names) rather than only in the local script.
  • Coordinates in almost any form — decimal degrees, degrees-minutes-seconds, hemisphere letters, geo: URIs, OpenStreetMap and Google Maps links, WKT and more.

Photos and sensors

  • Photo positioning — coordinates are read from a JPEG's Exif data, so an existing photo can set the viewpoint.
  • Automatic photo positioning — an algorithm will attempt to recognize the skyline ridge in the pictures and match it with the simulated data ridge.
  • Sensors — compass and gyroscope orient the view to match where the device is pointing; devices without a compass use the gyroscope alone.

Interface

  • Available in English, German, Italian, French, Spanish, Portuguese and Norwegian, following the device's language.
  • A slideshow of what the app does on the welcome screen and while the first map data downloads, and an in-app tutorial.
  • Phone-sized buttons and text on tablets; on iOS and Android the frame rate drops while nothing on the map moves, to save battery.

Installation

  • AndroidGoogle Play, or the .apk on Wikipedia attached to the GitHub releases for installation without an app store.
  • iOSApp Store, for iPhone and iPad.
  • Windows, macOS and LinuxGitHub releases. Each download is self-contained and bundles its own Java runtime, so no separate JVM installation is required: an installer for Windows, a .dmg on Wikipedia for macOS (Intel and Apple silicon), and a .deb on Wikipedia package plus an AppImage on Wikipedia for Linux. A plain .jar, needing Java 8 or later, covers other systems such as ARM Linux.
  • Pythonpip install peaknav from PyPI; see below.

Python package

The peaknav Python package exposes PeakNav's data and rendering to scripts and notebooks:

  • Elevation queriespeaknav.terrain returns the elevation of any coordinate on Earth in pure Python, reading the same compressed elevation dataset the app renders (with summit heights corrected against surveyed values); tiles are downloaded per area and cached locally.
  • Headless renderingpeaknav.headless drives the real PeakNav renderer off-screen through a REST API: camera control, view options (including road names and satellite imagery) and rendered frames, usable for scripted snapshots, panoramas and videos of the terrain. The renderer never opens a dialog; anything it would have asked is reported instead.
  • Jupyter widget (experimental)peaknav.jupyter provides an interactive 3D view inside a Jupyter on Wikipedia notebook, with pan/tilt controls, altitude and display toggles, driven entirely over the renderer's REST API (pip install peaknav[jupyter]).

Views

Ski slopes Tofana, Cortina d'Ampezzo
Ski slope view near Cortina d'Ampezzo generated by PeakNav.
Mount Rainier view.
Yoshida trail to Mount Fuji, Japan.
Yoshida trail to reach the summit of Mt. Fuji, Japan.


Datasets

PeakNav relies on datasets specifically compressed and optimized for devices with low computational power (such as mobile phones), currently hosted on HuggingFace:

Both are cut into slippy map tiles, so only the tiles covering the area of interest are transferred and stored. The elevation dataset can also be read directly from Python through the peaknav package described above.

Flight simulation over the Cyclades Islands in Greece generated with PeakNav.

See also