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.

GET/navigation/directions

Calculer un itinéraire avec instructions détaillées

Paramètres

NameTypeDescription
originLatnumberLatitude du point de départ (-90 à 90)
originLngnumberLongitude du point de départ (-180 à 180)
destLatnumberLatitude de destination (-90 à 90)
destLngnumberLongitude de destination (-180 à 180)
profilestring?Profil de routage (par défaut : driving-traffic)
languagestring?Langue des instructions : fr, ar ou en
alternatesnumber?Nombre d'itinéraires alternatifs, 0–3 (par défaut : 2)
stopsstring?Paires lat,lng séparées par des virgules pour les étapes (ex. 18.09,-15.97,18.10,-15.98)
skipSpeedLimitsboolean?Ignorer la recherche des vitesses maximales pour un recalcul plus rapide
avoidTollsboolean?Éviter les péages (profils driving uniquement)
avoidUnpavedboolean?Éviter les routes non revêtues (profils driving uniquement)
avoidFerriesboolean?Éviter les traversées en ferry (profils driving uniquement)
avoidHighwaysboolean?Éviter les autoroutes (profils driving uniquement)

Profils de routage

driving

Itinéraire voiture sans trafic en temps réel.

driving-traffic

Itinéraire voiture avec trafic en temps réel. Par défaut.

walking

Itinéraire piéton utilisant trottoirs et sentiers.

cycling

Itinéraire vélo privilégiant les voies cyclables.

truck

Itinéraire poids-lourd respectant les restrictions camion.

motorcycle

Itinéraire moto avec règles deux-roues.

Exemple de requête

cURLbash
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"
JavaScriptjavascript
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})`);
  }
}
Pythonpython
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.

cURLbash
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).