GET · /api/v1/navigation/directions
API de navigation
Directions point à point avec instructions détaillées. Renvoie une géométrie de route GeoJSON, des étapes avec guidage par voie, les vitesses maximales autorisées et les niveaux de congestion. Six profils de routage et itinéraires multi-étapes supportés.
Obtenir un itinéraire
Calcule un itinéraire d'une origine vers une destination, éventuellement via des étapes intermédiaires. Définissez alternates pour recevoir jusqu'à 3 itinéraires alternatifs en plus du principal.
/navigation/directionsCalculer un itinéraire avec instructions détaillées
Paramètres
| Name | Type | Description |
|---|---|---|
| originLat | number | Latitude du point de départ (-90 à 90) |
| originLng | number | Longitude du point de départ (-180 à 180) |
| destLat | number | Latitude de destination (-90 à 90) |
| destLng | number | Longitude de destination (-180 à 180) |
| profile | string? | Profil de routage (par défaut : driving-traffic) |
| language | string? | Langue des instructions : fr, ar ou en |
| alternates | number? | Nombre d'itinéraires alternatifs, 0–3 (par défaut : 2) |
| stops | string? | Paires lat,lng séparées par des virgules pour les étapes (ex. 18.09,-15.97,18.10,-15.98) |
| skipSpeedLimits | boolean? | Ignorer la recherche des vitesses maximales pour un recalcul plus rapide |
| avoidTolls | boolean? | Éviter les péages (profils driving uniquement) |
| avoidUnpaved | boolean? | Éviter les routes non revêtues (profils driving uniquement) |
| avoidFerries | boolean? | Éviter les traversées en ferry (profils driving uniquement) |
| avoidHighways | boolean? | Éviter les autoroutes (profils driving uniquement) |
Profils de routage
drivingItinéraire voiture sans trafic en temps réel.
driving-trafficItinéraire voiture avec trafic en temps réel. Par défaut.
walkingItinéraire piéton utilisant trottoirs et sentiers.
cyclingItinéraire vélo privilégiant les voies cyclables.
truckItinéraire poids-lourd respectant les restrictions camion.
motorcycleItinéraire moto avec règles deux-roues.
Exemple de requête
curl -X GET "https://api.oolelmaps.com/api/v1/navigation/directions?\
originLat=18.0858&\
originLng=-15.9785&\
destLat=18.1012&\
destLng=-15.9507&\
profile=driving-traffic&\
language=fr&\
alternates=2&\
avoidTolls=true" \
-H "Authorization: Bearer YOUR_API_KEY"const params = new URLSearchParams({
originLat: "18.0858",
originLng: "-15.9785",
destLat: "18.1012",
destLng: "-15.9507",
profile: "driving-traffic",
language: "fr",
alternates: "2",
avoidTolls: "true",
});
const response = await fetch(
`https://api.oolelmaps.com/api/v1/navigation/directions?${params}`,
{ headers: { Authorization: "Bearer YOUR_API_KEY" } },
);
const data = await response.json();
const routes = Array.isArray(data) ? data : [data];
for (const route of routes) {
console.log(`Distance: ${route.distance}m, duration: ${route.duration}s`);
for (const step of route.steps) {
console.log(`${step.instruction} (${step.distance}m, ${step.maneuverType})`);
}
}import requests
response = requests.get(
"https://api.oolelmaps.com/api/v1/navigation/directions",
params={
"originLat": 18.0858,
"originLng": -15.9785,
"destLat": 18.1012,
"destLng": -15.9507,
"profile": "driving-traffic",
"language": "fr",
"alternates": 2,
"avoidTolls": True,
},
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = response.json()
routes = data if isinstance(data, list) else [data]
for route in routes:
print(f"{route['distance']}m / {route['duration']}s")Itinéraires multi-étapes
Passez le paramètre stops pour insérer des étapes intermédiaires. Format : paires lat,lng séparées par des virgules (ex. stops=18.09,-15.97,18.10,-15.98). L'itinéraire passe par chaque étape dans l'ordre.
curl -X GET "https://api.oolelmaps.com/api/v1/navigation/directions?\
originLat=18.0858&originLng=-15.9785&\
destLat=18.1012&destLng=-15.9507&\
stops=18.0900,-15.9700,18.0950,-15.9600&\
profile=driving" \
-H "Authorization: Bearer YOUR_API_KEY"Exemple de réponse
[
{
"distance": 4379,
"duration": 338.276,
"geometry": [
[-15.946512, 18.092298],
[-15.948743, 18.089564],
[-15.950763, 18.091077],
[-15.951654, 18.091745]
],
"steps": [
{
"instruction": "Drive southwest.",
"distance": 385,
"duration": 46.218,
"maneuverType": "start_right",
"maneuverDirection": "right",
"maneuverLocation": [-15.946512, 18.092298],
"name": ""
},
{
"instruction": "Turn right.",
"distance": 966,
"duration": 89.419,
"maneuverType": "right",
"maneuverDirection": "right",
"maneuverLocation": [-15.948743, 18.089564],
"name": ""
},
{
"instruction": "Turn left onto RN1.",
"distance": 2730,
"duration": 159.974,
"maneuverType": "left",
"maneuverDirection": "left",
"maneuverLocation": [-15.955915, 18.09493],
"name": "RN1"
}
],
"summary": "RN1 → Avenue du Général de Gaulle",
"maxSpeeds": [
{ "speed": 50 },
{ "speed": 70 }
],
"congestionLevels": [
"low",
"moderate",
"heavy"
],
"pavedRatio": 1
}
]Notes d'utilisation
Format de la géométrie
La géométrie de la route est une LineString GeoJSON avec coordonnées en [longitude, latitude], prête à être affichée sur MapLibre GL, Leaflet ou toute bibliothèque compatible GeoJSON.
Champs d'étape
Chaque étape inclut un maneuverType (depart, turn, continue, merge, roundabout, fork, arrive) et un maneuverDirection (left, right, straight, slight left/right, sharp left/right, uturn) pour mapper vos propres icônes de manœuvre. Le guidage par voie, quand disponible, est dans le tableau lanes de l'étape.
Itinéraires alternatifs
Mettez alternates entre 0 et 3. Si la réponse contient plusieurs itinéraires, elle est renvoyée comme un tableau JSON trié du plus rapide au plus lent. Un seul itinéraire est renvoyé comme un objet simple.
Options d'évitement
avoidTolls, avoidUnpaved, avoidFerries et avoidHighways s'appliquent uniquement aux profils driving et driving-traffic. Elles sont ignorées pour walking, cycling, truck et motorcycle.
Vitesses & congestion
Quand disponibles, la réponse inclut un tableau maxSpeeds avec la vitesse maximale autorisée sur chaque segment de la géométrie, et un tableau congestionLevels avec les niveaux de trafic par segment (low, moderate, heavy, severe).