Skip to content

Iteam1337/openmaps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Open Map API

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.

📚 API-dokumentation

Interaktiv API-dokumentation finns tillgänglig på:

🌟 Funktioner

  • 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

🚀 Snabbstart

Grundläggande användning

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

Geocoding - Adress till koordinater

curl "https://openmaps.iteam.pub/maps/api/geocode/json?address=Drottninggatan+1,+Stockholm&key=demo"

Reverse Geocoding - Koordinater till adress

curl "https://openmaps.iteam.pub/maps/api/geocode/json?latlng=59.3293,18.0686&key=demo"

Directions - Vägbeskrivning

curl "https://openmaps.iteam.pub/maps/api/directions/json?origin=Stockholm+Central&destination=Gamla+Stan&key=demo"

Distance Matrix - AvstĂĄnd mellan punkter

curl "https://openmaps.iteam.pub/maps/api/distancematrix/json?origins=Stockholm|Göteborg&destinations=Malmö|Uppsala&key=demo"

Places Search - Sök platser

curl "https://openmaps.iteam.pub/maps/api/place/textsearch/json?query=restauranger+i+Stockholm&key=demo"

Autocomplete - Adressförslag

curl "https://openmaps.iteam.pub/maps/api/place/autocomplete/json?input=Drottning&key=demo"

Route Optimization - Optimera rutter

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"
  }'

🌍 JavaScript/TypeScript Integration

Fetch API

// 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);

Axios

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
});

Google Maps API Migration

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.

🏗️ Arkitektur

API:et använder följande öppna tjänster:

  • Pelias - Geocoding och platssökning
  • OSRM - Routing och avstĂĄndsmätning
  • VROOM - Ruttoptimering

🔑 Autentisering

För närvarande accepterar API:et vilken sträng som helst som API-nyckel via key parameter. Alla endpoints kräver denna parameter.


🛠️ Utveckling och Deployment

Lokal utveckling

# 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 dev

API:et kommer att vara tillgängligt på http://localhost:3000

Docker

# Bygg Docker-image
docker build -t openmaps-api .

# Kör container
docker run -p 3000:3000 openmaps-api

Projektstruktur

src/
├── 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

Deployment

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

Miljövariabler

# 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

Kodstil

  • 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

🤝 Bidrag

  1. Forka repositoriet
  2. Skapa en feature branch
  3. Gör dina ändringar
  4. Lägg till tester
  5. Skicka en pull request

📞 Support

För frågor och support, skapa en issue i detta repository.


Byggd med ❤️ av Iteam

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 3

  •  
  •  
  •