Spaces:
Configuration error
Configuration error
File size: 1,270 Bytes
c317d66 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | """Mapbox client - geocoding, directions/routing, geofencing (via tilesets)."""
import os
import requests
BASE = os.getenv("MAPBOX_API_BASE", "https://api.mapbox.com")
TOKEN = os.getenv("MAPBOX_ACCESS_TOKEN")
def _p(**params):
if not TOKEN:
raise RuntimeError("MAPBOX_ACCESS_TOKEN not set")
params["access_token"] = TOKEN
return params
def geocode(query, limit=5, types=None, **kwargs):
p = _p(limit=limit, **kwargs)
if types:
p["types"] = types
return requests.get(f"{BASE}/geocoding/v5/mapbox.places/{query}.json", params=p, timeout=60).json()
def reverse_geocode(lng, lat, limit=1):
return requests.get(f"{BASE}/geocoding/v5/mapbox.places/{lng},{lat}.json", params=_p(limit=limit), timeout=60).json()
def directions(coordinates, profile="driving-traffic", alternatives=False, **kwargs):
coords = ";".join(f"{lng},{lat}" for lng, lat in coordinates)
p = _p(alternatives=str(alternatives).lower(), **kwargs)
return requests.get(f"{BASE}/directions/v5/mapbox/{profile}/{coords}", params=p, timeout=60).json()
def isochrone(lng, lat, minutes=10, profile="driving"):
return requests.get(f"{BASE}/isochrone/v1/mapbox/{profile}/{lng},{lat}", params=_p(contours_minutes=str(minutes)), timeout=60).json()
|