Itinéraires
Des itinéraires comme les gens se déplacent vraiment ici : en voiture, en okada, en keke, en danfo, à pied, en train ou en bateau, avec le trafic en direct, les péages, les interdictions de motos et de kekes, les frontières, et le prix normal de la course.
Sur cette page
Adresse de base : https://nways.ng/maps/v1. Ici, les itinéraires, les tarifs et le trafic ; pour de nombreux départs et arrivées à la fois, voyez la matrice d’itinéraires, et pour un lot d’arrêts l’optimisation de tournées. Référence
Obtenir un itinéraire
POST /maps/v1/routes/compute avec un corps JSON.
curl -X POST "https://nways.ng/maps/v1/routes/compute" \
-H "X-NWays-Api-Key: VOTRE_CLE_API" -H "Content-Type: application/json" \
-d '{"origin": {"lat": 6.6018, "lng": 3.3515}, "destination": {"postcode": "LA08A09DB09"}, "mode": "okada", "fares": true}'import { createClient } from '@nways/maps'
const nways = createClient({ key: process.env.NWAYS_API_KEY })
const { routes } = await nways.route({
origin: { lat: 9.0579, lng: 7.4951 },
intermediates: [{ lat: 9.0765, lng: 7.3986 }],
destination: { lat: 9.0034, lng: 7.2633 },
mode: 'drive',
avoid: ['tolls'],
})
console.log(Math.round(routes[0].durationS / 60), 'min')import os
import requests
res = requests.post(
"https://nways.ng/maps/v1/routes/compute",
headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
json={"origin": {"lat": 5.6037, "lng": -0.187}, "destination": {"lat": 6.1319, "lng": 1.2228}, "mode": "drive", "lang": "fr"},
timeout=20,
)
res.raise_for_status()
best = res.json()["routes"][0]
print(round(best["durationS"] / 60), "min")Corps de la requête
| Champ | Description |
|---|---|
origin, destination | Obligatoires. Un point { "lat", "lng" }, un code postal NIPOST { "postcode" } (l’itinéraire se termine à la meilleure entrée du bâtiment), une adresse { "ghanaPost" } ou un { "plusCode" }. Le départ peut avoir un cap (heading) en degrés, pour qu’un véhicule en mouvement ne commence pas par un demi-tour. |
intermediates | Jusqu’à 25 arrêts intermédiaires en chemin, dans l’ordre, sous les mêmes formes. |
mode | drive (par défaut), van, okada (une moto-taxi : respecte les interdictions d’okada), motorbike (votre propre moto : les interdictions commerciales ne s’appliquent pas), keke et danfo (respectent leurs interdictions), walk, bicycle, boat (bateaux de passagers et embarcadères), train. |
alternatives | true pour jusqu’à 2 itinéraires de plus (sans arrêts intermédiaires). |
routingPreference | traffic_unaware (par défaut) ou traffic_aware : trafic en direct et incidents signalés. |
departAt | L’heure de départ (RFC 3339) : les bateaux circulent de jour, et le trafic suit l’heure. |
avoid | Au choix parmi tolls, highways, bad_roads (routes que les conducteurs ont signalées comme abîmées ou inondées). |
tollVehicle | La classe tarifaire du péage : car, suv, bus, truck. |
access | Trajets en train et en bateau : comment rejoindre et quitter la gare ou l’embarcadère : walk, okada ou drive. |
lastMile | Là où la route s’arrête avant la porte : finir à pied (walk) ou en okada. |
allowBans | Identifiants d’interdictions signalées mais non confirmées à traverser quand même. |
fares | true ajoute à chaque itinéraire ce que devrait coûter le trajet. |
lang | en (par défaut) ou fr, pour les instructions. |
?fields= ne garde que certains champs de chaque itinéraire, par exemple fields=distanceM,durationS,geometry.
Réponse
{
"routes": [
{
"distanceM": 1395,
"durationS": 228,
"staticDurationS": 228,
"trafficDelayS": 0,
"summary": "Admiralty Way and Awudu Ekpekha Boulevard",
"geometry": { "type": "LineString", "coordinates": [[3.472352, 6.4474], [3.472352, 6.447802], "…"] },
"legs": [{ "distanceM": 1395, "durationS": 228 }],
"steps": [
{ "maneuver": "depart_left", "instruction": "Drive north on Victoria Arobieke Street.", "distanceM": 44, "durationS": 6, "streetNames": ["Victoria Arobieke Street"], "startIndex": 0, "endIndex": 1 }
],
"country": "NG"
}
]
}| Champ | Description |
|---|---|
routes | Le meilleur itinéraire d’abord, puis les éventuelles alternatives. |
distanceM, durationS | La longueur en mètres et la durée en secondes. |
staticDurationS, trafficDelayS | La durée sans le trafic en direct, et ce que le trafic et les incidents ajoutent en ce moment (avec traffic_aware). |
geometry | Une LineString GeoJSON, prête pour une couche de carte. |
steps | Le guidage pas à pas : instruction, distance, durée, streetNames, et où chaque étape commence et finit dans geometry ; sorties de rond-point, feux, et à pied passerelles ou passages piétons. |
legs | Un par tronçon entre deux arrêts. |
segments | Les trajets qui changent de moyen de transport : un train ou un bateau, ou un okada qui contourne une zone d’interdiction à pied. |
vehicleRules | Trajets en okada, keke et danfo : les interdictions que l’itinéraire a évitées (avoided), les règles qui ne sont que des conseils, un départ ou une arrivée dans une zone d’interdiction (endBan), et les endroits où les conducteurs disent se faire arrêter. |
lastMile | Où s’arrêter quand la route finit avant la porte, et comment terminer. |
access | Un lotissement ou une concession fermés à l’arrivée. |
tolls, borderCrossings | Les péages et ce qu’ils coûtent dans leur monnaie ; les postes-frontières sur les trajets entre pays. |
congestion, roadCondition | Les tronçons lents ; les tronçons abîmés, inondés ou endommagés signalés par les conducteurs. |
fares | Avec fares: true : ce que devrait coûter le trajet (voir Tarifs). |
warnings | Tout ce qui mérite encore d’être dit au conducteur. |
Erreurs
| Statut | Code | Signification |
|---|---|---|
| 400 | MODE_INVALID, WAYPOINT_INVALID, TOO_MANY_INTERMEDIATES… | Un champ manquant ou erroné. Le message dit lequel. |
| 404 | POSTCODE_NOT_FOUND, GHANAPOST_NOT_FOUND | Un code que N-Ways ne sait pas placer. |
| 422 | NO_ROUTE, NO_ROAD_ROUTE | Pas d’itinéraire : un point est trop loin de toute route, ou de l’autre côté de l’eau (essayez boat ou walk). |
| 422 | OKADA_BANNED_ORIGIN, …_DESTINATION, …_STOP, …_ROUTE | Un okada ne peut pas faire ce trajet ; de même pour MOTORBIKE_BANNED_…, KEKE_BANNED_… et DANFO_BANNED_…. |
| 422 | ROUTE_TOO_FAR | Les lieux sont trop éloignés pour un seul itinéraire de ce type. |
| 503 | ROUTING_UNAVAILABLE | Le moteur d’itinéraires est occupé ou redémarre. Réessayez dans une minute. |
Les itinéraires de base (voiture, camionnette, à pied et à vélo sans trafic en direct, jusqu’à 10 arrêts) et les itinéraires avancés (trafic en direct, okada, keke, danfo, moto, bateau, train, plus de 10 arrêts, ou tarifs) n’ont pas le même prix. Tarifs
Tarifs
Ce que devrait coûter une course, dans la monnaie du pays : taxi, taxi collectif, okada, keke, danfo ou bus, bateau et VTC, d’après ce que les passagers ont payé (basis: crowd) ou des sources publiées (basis: guide), avec la nuit, les heures de pointe, la pluie et les courses privatisées.
GET /maps/v1/fares/estimate
| Paramètre | Description |
|---|---|
from, to | Obligatoires. lat,lng chacun. |
mode | Séparés par des virgules : taxi, shared_taxi, okada, keke, danfo, ridehail, boat. Tous s’il n’est pas donné. |
distanceM, durationS | La longueur et la durée de l’itinéraire, si vous les avez ; les estimations sont meilleures. |
at | L’heure du trajet (RFC 3339) : la nuit et les heures de pointe coûtent plus cher. |
charter, rain | true pour une course privatisée (« drop »), ou sous la pluie. |
lang | en ou fr. |
curl "https://nways.ng/maps/v1/fares/estimate?from=6.4474,3.4720&to=6.5244,3.3792&mode=okada,taxi" \
-H "X-NWays-Api-Key: VOTRE_CLE_API"La réponse donne la currency et une entrée estimates par mode avec les prix low, typical et high (dans l’unité principale de la monnaie), un text rédigé comme 8 150–15 200 ₦, s’il s’agit d’un prix par personne (perPerson), et ses sources. Les modes que la loi exclut du trajet sont dans notAllowed, avec la règle et sa source (les okadas sont interdits dans une grande partie de Lagos).
Trafic en direct
curl "https://nways.ng/maps/v1/traffic?bbox=3.30,6.40,3.50,6.60" -H "X-NWays-Api-Key: VOTRE_CLE_API"Les routes avec des mesures en direct dans un rectangle (minLng,minLat,maxLng,maxLat, moins de 3° de large), en lignes GeoJSON avec un niveau d’embouteillage, pour les dessiner sur une carte. Les mesures viennent, de façon anonyme, des téléphones N-Ways sur la route. Ne les mettez pas en cache : elles changent d’une minute à l’autre. Pour les vitesses par route et par sens, pour vos propres heures d’arrivée, voyez le flux de trafic.
L’ancienne adresse
POST https://nways.ng/v1/routes (avec from, to et stops) et /v1/fares/estimate continuent de fonctionner pour les partenaires qui les utilisent déjà pendant au moins 12 mois, mais leurs réponses suivent l’application N-Ways. Passez à /maps/v1, dont les réponses ne font que gagner des champs.