Skip to content

roma8ok/getmapstack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Getmapstack

Self-hosted mapping stack. One command per country.

Replace Google Maps API - no API keys, no rate limits, no vendor lock-in.

Routing via Valhalla 3.8.3, geocoding via Photon 1.2.1.

One docker run command starts a container with Valhalla routing on port 8002 and Photon geocoding on port 2322, backed by OSM data baked into the image; your application talks to both.

Quick start

docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/cyprus

Images are multi-arch: linux/amd64 and linux/arm64 (Apple Silicon, AWS Graviton).

Hosted API

Try the stack without installing - the same services for all supported countries at https://api.getmapstack.com (/valhalla and /photon prefixes):

curl https://api.getmapstack.com/valhalla/route \
  -d '{"locations":[{"lat":35.18,"lon":33.38},{"lat":34.67,"lon":33.04}],"costing":"auto"}'
curl "https://api.getmapstack.com/photon/api?q=Nicosia&limit=1"

Please keep your usage fair. No SLA - this is a demo that may change or disappear; run your own container for unlimited use.

Verify

Routing - Nicosia to Limassol:

curl localhost:8002/route \
  -d '{"locations":[{"lat":35.18,"lon":33.38},{"lat":34.67,"lon":33.04}],"costing":"auto"}'
{"trip":{"summary":{"length":84.229,"time":3743.53,"has_highway":true}}}

Geocoding - search for "Nicosia":

curl "localhost:2322/api?q=Nicosia&limit=1"
{"features":[{"properties":{"name":"Λευκωσία - Lefkoşa","type":"district","country":"Κύπρος - Kıbrıs"}}]}

Reverse geocoding - coordinates to address:

curl "localhost:2322/reverse?lon=33.3825&lat=35.1853&limit=1"
{"features":[{"properties":{"street":"Zappeiou","housenumber":"21","city":"Λευκωσία"}}]}

Full API docs: Valhalla API · Photon API

Countries

Country Size Run
🇧🇪 Belgium 1.9 GB docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/belgium
🇧🇳 Brunei 0.5 GB docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/brunei
🇨🇾 Cyprus 0.3 GB docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/cyprus
🇮🇩 Indonesia 1.5 GB docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/indonesia
🇰🇿 Kazakhstan 1.0 GB docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/kazakhstan
🇲🇾 Malaysia 0.8 GB docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/malaysia
🇸🇬 Singapore 0.6 GB docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/singapore
🇰🇷 South Korea 1.5 GB docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/south-korea
🇻🇳 Vietnam 0.9 GB docker run -p 8002:8002 -p 2322:2322 ghcr.io/roma8ok/getmapstack/vietnam

Build it yourself

Requires Docker. Build a country image locally instead of pulling from GHCR:

git clone https://github.com/roma8ok/getmapstack.git
cd getmapstack
make build-valhalla-builder
make build-photon-builder
make create-valhalla-tiles COUNTRY=cyprus
make create-photon-data COUNTRY=cyprus
make build-server COUNTRY=cyprus
docker run -p 8002:8002 -p 2322:2322 getmapstack/cyprus

Intermediate artifacts (routing tiles, geocoding index) land in artifacts/. Images build for linux/amd64 and linux/arm64 by default - pass PLATFORMS=linux/arm64 (or your platform) for a faster single-arch build. make help lists all targets and available countries.

License

Code: MIT. Map data: © OpenStreetMap contributors, ODbL 1.0, sourced from Geofabrik extracts.

The images embed OSM-derived databases (routing tiles, geocoding index) redistributed under ODbL 1.0 - see NOTICE for full attribution. If you publicly use routing or geocoding results from these images, credit OpenStreetMap: "© OpenStreetMap contributors" linked to openstreetmap.org/copyright.

About

Run your own mapping stack - routing and geocoding. No API keys, no rate limits, no vendor lock-in.

Resources

Stars

Watchers

Forks

Packages

Contributors

Languages