A JavaScript library for rendering interactive 3D globes and 2D maps in the browser with WebGL, without plugins.
maplibre/navara
A headless-core 3D map engine that streams GIS data like satellite imagery, terrain, 3D city models and vector data onto an interactive globe.
Open-source alternative to:Google Earth
- Stars
- 450
- Forks
- 50
- Open issues
- 38
- Last commit
- 10 hours ago
What is it?
Navara is a 3D map engine for building interactive globe applications. It streams GIS data such as satellite imagery, terrain, 3D city models and vector data, and lets developers present that data as a basemap for visualization, style features by their attributes, or build a photorealistic scene with atmosphere, sunlight and shadows.
Its API is organized into four tiers: a declarative tier for sources and layers defined as config objects, a plugin tier for ready-made features such as first-person walking and DOM overlays, an API tier for attribute-based feature styling, picking, terrain sampling and camera control, and a shader tier for custom shaders and render effects. Developers can start simply and move down to lower levels only when needed.
The GIS core is headless and independent of the renderer. Data parsing and geometry construction are written in Rust compiled to WebAssembly, while drawing is currently delegated to Three.js, which keeps the rendering layer swappable.
Key features
- 01Streams satellite imagery, terrain, 3D Tiles and vector data onto a 3D globe.
- 02Four-tier API from declarative config down to custom shaders.
- 03Per-feature styling driven by attributes and feature picking.
- 04Standalone geodetic and ECEF math utilities.
- 05GIS logic implemented in Rust and WebAssembly, with Three.js for rendering.
Use cases
- Visualizing geospatial datasets on a 3D globe.
- Building photorealistic city scenes with terrain and 3D building models.
- Creating custom rendering effects on top of GIS data with your own shaders.
- Adding interactive feature styling and picking to a globe-based web app.
Quick start
- 1
Install Rust (stable), Node.js (LTS) and pnpm
- 2
Install cargo-make
cargo install cargo-make - 3
Run the initial setup
cargo make prepare - 4
Start the dev server with hot-reload
cargo make dev
Things to know
- Building from source needs Rust, Node.js, pnpm and wasm-bindgen-cli, which is a heavy toolchain.
- The first dev run shows a browser error until the WASM build finishes and the page is reloaded.
Topics
FAQ
- What is navara?
- A headless-core 3D map engine that streams GIS data like satellite imagery, terrain, 3D city models and vector data onto an interactive globe. Navara is a 3D map engine for building interactive globe applications. It streams GIS data such as satellite imagery, terrain, 3D city models and vector data, and lets developers present that data as a basemap for visualization, style features by their attributes, or build a photorealistic scene with atmosphere, sunlight and shadows.
- Is navara free to use? What license does it have?
- navara is open source under the Other license. Check the license terms before using it in commercial products.
- Is navara still maintained?
- Actively maintained. The last commit to navara was on Nov 6, 2026.
- What can I use navara for?
- Visualizing geospatial datasets on a 3D globe. Building photorealistic city scenes with terrain and 3D building models. Creating custom rendering effects on top of GIS data with your own shaders. Adding interactive feature styling and picking to a globe-based web app.
- How do I install navara?
- Install Rust (stable), Node.js (LTS) and pnpm Install cargo-make: cargo install cargo-make Run the initial setup: cargo make prepare Start the dev server with hot-reload: cargo make dev
- Where can I get navara?
- The source code and installation instructions are on GitHub: https://github.com/maplibre/navara
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
An open-source browser globe that layers live flights, ships, satellites, quakes, traffic and public cameras on photorealistic 3D terrain, with voice control.
A Rust CLI that converts LAS, LAZ and CSV point cloud data into 3D Tiles 1.1 with GLB output for Cesium.
A lightweight, cloud-native GIS platform that runs in the browser, on desktop, mobile, and Jupyter for visualizing and analyzing geospatial data.
Pure-Rust library and CLI for reading, writing and converting raster, vector and point cloud geospatial data without C dependencies.
A Three.js renderer for 3D Gaussian Splatting scenes, supporting WebGPU and WebGL2 with streaming LOD for large models.