En Google Maps API-kompatibel geocoding-, routing- och optimeringstjänst som fungerar som en gateway för öppna kartdata-tjänster. Drop-in replacement för många Google Maps API-anrop.
Interaktiv API-dokumentation finns tillgänglig på:
- Produktion: https://openmaps.iteam.pub
- OpenAPI-specifikation: https://openmaps.iteam.pub/openapi.json
- Geocoding & Reverse Geocoding - Konvertera adresser till koordinater och vice versa
- Directions - Beräkna rutter och turn-by-turn navigering
- Distance Matrix - Beräkna avstånd och restider mellan flera punkter
- Places Search - Sök efter platser med text eller närhetssökning
- Autocomplete - Förslag för adresser och platser
- Route Optimization - VRP (Vehicle Routing Problem) och TSP (Traveling Salesman Problem)
- Google Maps API-kompatibel - Samma endpoints och dataformat
Alla endpoints kräver en API-nyckel som query parameter key. För närvarande accepteras vilken sträng som helst.
Base URL: https://openmaps.iteam.pub
curl "https://openmaps.iteam.pub/maps/api/geocode/json?address=Drottninggatan+1,+Stockholm&key=demo"curl "https://openmaps.iteam.pub/maps/api/geocode/json?latlng=59.3293,18.0686&key=demo"curl "https://openmaps.iteam.pub/maps/api/directions/json?origin=Stockholm+Central&destination=Gamla+Stan&key=demo"curl "https://openmaps.iteam.pub/maps/api/distancematrix/json?origins=Stockholm|Göteborg&destinations=Malmö|Uppsala&key=demo"curl "https://openmaps.iteam.pub/maps/api/place/textsearch/json?query=restauranger+i+Stockholm&key=demo"curl "https://openmaps.iteam.pub/maps/api/place/autocomplete/json?input=Drottning&key=demo"curl -X POST "https://openmaps.iteam.pub/api/optimization/tsp" \
-H "Content-Type: application/json" \
-d '{
"locations": [[18.0686, 59.3293], [18.0696, 59.3303], [18.0706, 59.3313]],
"start": 0,
"profile": "driving"
}'// Geocoding
const geocodeResponse = await fetch(
'https://openmaps.iteam.pub/maps/api/geocode/json?address=Stockholm&key=demo'
);
const geocodeData = await geocodeResponse.json();
console.log(geocodeData.results[0].geometry.location);
// Directions
const directionsResponse = await fetch(
'https://openmaps.iteam.pub/maps/api/directions/json?origin=Stockholm&destination=Göteborg&key=demo'
);
const directionsData = await directionsResponse.json();
console.log(directionsData.routes[0].legs[0].duration.text);import axios from 'axios';
const api = axios.create({
baseURL: 'https://openmaps.iteam.pub',
params: { key: 'demo' }
});
// Geocoding
const geocode = await api.get('/maps/api/geocode/json', {
params: { address: 'Drottninggatan 1, Stockholm' }
});
// Places search
const places = await api.get('/maps/api/place/textsearch/json', {
params: { query: 'restauranger i Stockholm' }
});
// Route optimization
const optimization = await api.post('/api/optimization/tsp', {
locations: [[18.0686, 59.3293], [18.0696, 59.3303]],
start: 0
});För att migrera från Google Maps API, byt bara base URL:
// FrĂĄn Google Maps
const GOOGLE_BASE = 'https://maps.googleapis.com/maps/api';
// Till Open Map API
const OPENMAP_BASE = 'https://openmaps.iteam.pub/maps/api';Samma endpoints och parametrar fungerar i de flesta fall.
API:et använder följande öppna tjänster:
För närvarande accepterar API:et vilken sträng som helst som API-nyckel via key parameter. Alla endpoints kräver denna parameter.
# Klona repositoriet
git clone https://github.com/iteam/openmapapi.git
cd openmapapi
# Installera dependencies
npm install
# Kopiera miljövariabler
cp .env.example .env
# Starta utvecklingsservern
npm run devAPI:et kommer att vara tillgängligt på http://localhost:3000
# Bygg Docker-image
docker build -t openmaps-api .
# Kör container
docker run -p 3000:3000 openmaps-apisrc/
├── adapters/ # HTTP request/response hantering
├── config/ # Konfiguration och externa klienter
├── middleware/ # Request validering och preprocessing
├── routes/ # Route definitioner och Swagger docs
├── schemas/ # Zod schemas och TypeScript types
└── services/ # Affärslogik och dataåtkomst
Projektet är konfigurerat för deployment med FluxCD och Kubernetes:
- Namespace:
openmaps - Replicas: 2 (med HPA för autoskalning)
- Ingress: TLS med Let's Encrypt
- CI/CD: GitHub Actions → GHCR → FluxCD
# Server
PORT=3000
NODE_ENV=production
API_BASE_URL=https://openmaps.iteam.pub
# Externa tjänster
PELIAS_BASE_URL=https://pelias.telge.iteam.pub/v1
OSRM_BASE_URL=https://osrm.telge.iteam.pub
VROOM_BASE_URL=https://vroom.telge.iteam.pub- TypeScript för typsäkerhet
- Zod för runtime-validering
- Funktionell programmering - använd map/reduce istället för loopar
- Engelska för all kod, kommentarer och dokumentation
- Centraliserad felhantering - kasta typade fel, middleware hanterar formatering
- Forka repositoriet
- Skapa en feature branch
- Gör dina ändringar
- Lägg till tester
- Skicka en pull request
För frågor och support, skapa en issue i detta repository.
Byggd med ❤️ av Iteam