Atlasr is a truly open-source and free map browser. The goal is threefold:
- Learn about all the layers and components that make a map,
- Provide a ready-to-use set of tools to build a 100% open-source, free, and standalone map browser,
- Provide an alternative service to the famous Google Maps or Apple Maps, with no ads, with respect to user privacy, with 100% open-source and free data, and the top 10 features of Google Maps.
A map architecture is composed of the following components:
- Map data, A giant database containing all information about roads, trails, cafés, railway stations, buildings etc. The biggest major project is OpenStreetMap,
- Tile server, A program that, given a specific region, reads
the map database and compiles those information in a certain
.mbtilesfor instance. Each region of a planet is named a tile. A tile is defined by a longitude, a latitude, and a zoom (an altitude scale),
- Map renderer, A program that, given a set of tiles,
renders/draws a map, so each roads, buildings etc. finally come
alive at this step. A map renderer requires at least the following
- Tile decoder to decode the tiles received from the tile server,
- Styles to know how to draw the data from the map (e.g. “roads must be blue with a white strike”),
- Fonts to render texts,
- Icons to represent some places with an image (like hospitals, police stations, parcs etc.).
- Geocoding, A program that can find the longitude and the latitude of a labellised element on earth, like a postal address, a building name, or a river name for examples,
- Routing, A program that is able to find a path/route between one or many points (longitude + latitude) given some constraints (like the vehicule type, the road preference etc.). A route preferably comes with descriptions, like “Turn right in 100m”, “Follow A10 for 7km” etc.
Obviously, each component comes with thousands of details and constraints. The previous list is a high overview of how it works.
The open-source map ecosystem is mature. Many projects already exist to address one component of the map architecture. However, a mainstream tool that combined all these projects, based on 100% open-source and free data, is still missing. Atlasr aims to be the response to this problem.
The quality must be comparable with Google Maps or Apple Maps:
- Smooth and fast experience,
- Reliable data,
- Beautiful design for the map and the UI.
The actual roadmap is the following:
- Map data, all data comes from OpenStreetMap,
- Tile server [
- Vector tiles are pre-computed by OpenMapTiles, which relies on OpenStreetMap.
- Format is
- Solid and robust tile server.
- Map renderer [
- Geocoding [
- Routing [
- Delegate all the works to GraphHopper, only use the
open-source API. API to use:
- Routing API,
- Isochrone API.
- Delegate all the works to GraphHopper, only use the open-source API. API to use:
- HTTP server [
- Fast and robust HTTP server between the client and all the API.
- Client/Web UI [
- Smooth and fast,
- Search one or many positions (geocoding),
- Search a route (routing),
- Search a route with constraints,
- Enhance data with Wikipedia (photos, descriptions, metadata etc.),
- All links are sharable,
- More features.
Current focus: The current hard work is to provide all map components as local and standalone instances. Everything has been addressed except the fonts in the map renderer (yet).
Next focus: Replace the top 10 features on Google Maps.
Map renderer: The tiles, the style, the icons, everything comes from Atlasr. No external service is used.
Geocoding and Routing: Atlasr is able to geoencode 2 postal addresses, and find a route between the two:
just is required to run all the commands. Run
just --list to get an overview of all the commands.
$ # Install API tile server. $ just install-api-tile $ # Run the tile server. $ just run-api-tile
$ # Download the data, install the indexer, and install the search engine. $ just install-api-geocode $ # Run the geocoding server. $ just run-api-geocode-searcher
$ # Install the geocoding server. $ just install-api-route $ # Run the geocoding server. $ just run-api-route
$ # Install the HTTP server for the client. $ just install-server $ # Run the HTTP server for the client. $ just run-server $ # Install the Web UI, its dependencies, and prepare the frontend. $ just install-client $ # Open the client. $ just open
The entire project is under the BSD-3-Clause license. Please read the