Percursos
Percursos como as pessoas se deslocam de facto aqui: de carro, de okada, de keke, de danfo, a pé, de comboio ou de barco, com trânsito em tempo real, portagens, proibições de okadas e kekes, fronteiras, e quanto a viagem deveria custar.
Nesta página
Endereço base: https://nways.ng/maps/v1. Aqui, os percursos, as tarifas e o trânsito; para muitas origens e destinos de uma vez, veja a matriz de percursos, e para um lote de paragens a otimização de rotas. Referência
Obter um percurso
POST /maps/v1/routes/compute com um corpo JSON.
curl -X POST "https://nways.ng/maps/v1/routes/compute" \
-H "X-NWays-Api-Key: A_SUA_CHAVE_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")Corpo do pedido
| Campo | Descrição |
|---|---|
origin, destination | Obrigatórios. Um ponto { "lat", "lng" }, um código postal NIPOST { "postcode" } (o percurso termina na melhor entrada do edifício), um endereço { "ghanaPost" } ou um { "plusCode" }. A origem pode ter um rumo (heading) em graus, para que um veículo em movimento não comece com uma inversão de marcha. |
intermediates | Até 25 paragens pelo caminho, por ordem, nas mesmas formas. |
mode | drive (por omissão), van, okada (um mototáxi: respeita as proibições de okada), motorbike (a sua própria mota: as proibições comerciais não se aplicam), keke e danfo (respeitam as suas proibições), walk, bicycle, boat (barcos de passageiros e cais), train. |
alternatives | true para até mais 2 percursos (sem paragens intermédias). |
routingPreference | traffic_unaware (por omissão) ou traffic_aware: trânsito em tempo real e incidentes assinalados. |
departAt | A hora de partida (RFC 3339): os barcos circulam de dia, e o trânsito segue a hora. |
avoid | Qualquer um de tolls, highways, bad_roads (estradas que os condutores assinalaram como degradadas ou inundadas). |
tollVehicle | A classe tarifária da portagem: car, suv, bus, truck. |
access | Viagens de comboio e de barco: como chegar à estação ou ao cais e como sair: walk, okada ou drive. |
lastMile | Onde a estrada acaba antes da porta: terminar a pé (walk) ou de okada. |
allowBans | Identificadores de proibições assinaladas mas não confirmadas que se quer atravessar mesmo assim. |
fares | true acrescenta a cada percurso quanto a viagem deveria custar. |
lang | en (por omissão) ou fr, para as instruções. |
?fields= mantém só alguns campos de cada percurso, por exemplo fields=distanceM,durationS,geometry.
Resposta
{
"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"
}
]
}| Campo | Descrição |
|---|---|
routes | O melhor percurso primeiro, depois as eventuais alternativas. |
distanceM, durationS | O comprimento em metros e a duração em segundos. |
staticDurationS, trafficDelayS | A duração sem trânsito em tempo real, e o que o trânsito e os incidentes acrescentam neste momento (com traffic_aware). |
geometry | Uma LineString GeoJSON, pronta para uma camada de mapa. |
steps | A navegação curva a curva: instruction, distância, duração, streetNames, e onde cada passo começa e acaba em geometry; saídas de rotunda, semáforos e, a pé, passagens superiores ou passadeiras. |
legs | Um por troço entre duas paragens. |
segments | As viagens que mudam de meio de transporte: um comboio ou um barco, ou um okada que contorna a pé uma zona de proibição. |
vehicleRules | Viagens de okada, keke e danfo: as proibições que o percurso evitou (avoided), as regras que são apenas conselhos, uma partida ou chegada dentro de uma zona de proibição (endBan), e os sítios onde os condutores dizem ser mandados parar. |
lastMile | Onde parar quando a estrada acaba antes da porta, e como terminar. |
access | Um condomínio ou um lote fechado no destino. |
tolls, borderCrossings | As portagens e quanto custam nas suas moedas; os postos fronteiriços nas viagens entre países. |
congestion, roadCondition | Os troços lentos; os troços degradados, inundados ou danificados assinalados pelos condutores. |
fares | Com fares: true: quanto a viagem deveria custar (ver Tarifas). |
warnings | Tudo o que ainda vale a pena dizer ao condutor. |
Erros
| Estado | Código | Significado |
|---|---|---|
| 400 | MODE_INVALID, WAYPOINT_INVALID, TOO_MANY_INTERMEDIATES… | Um campo em falta ou errado. A mensagem diz qual. |
| 404 | POSTCODE_NOT_FOUND, GHANAPOST_NOT_FOUND | Um código que o N-Ways não consegue localizar. |
| 422 | NO_ROUTE, NO_ROAD_ROUTE | Sem percurso: um ponto está demasiado longe de qualquer estrada, ou do outro lado da água (experimente boat ou walk). |
| 422 | OKADA_BANNED_ORIGIN, …_DESTINATION, …_STOP, …_ROUTE | Um okada não pode fazer esta viagem; o mesmo para MOTORBIKE_BANNED_…, KEKE_BANNED_… e DANFO_BANNED_…. |
| 422 | ROUTE_TOO_FAR | Os lugares estão demasiado afastados para um só percurso deste tipo. |
| 503 | ROUTING_UNAVAILABLE | O motor de percursos está ocupado ou a reiniciar. Tente de novo daqui a um minuto. |
Os percursos básicos (carro, carrinha, a pé e de bicicleta sem trânsito em tempo real, até 10 paragens) e os avançados (trânsito em tempo real, okada, keke, danfo, mota, barco, comboio, mais de 10 paragens, ou tarifas) têm preços diferentes. Preços
Tarifas
Quanto deveria custar uma viagem, na moeda do país: táxi, táxi coletivo, okada, keke, danfo ou autocarro, barco e transporte por aplicação, segundo o que os passageiros pagaram (basis: crowd) ou fontes publicadas (basis: guide), com a noite, as horas de ponta, a chuva e as viagens fretadas.
GET /maps/v1/fares/estimate
| Parâmetro | Descrição |
|---|---|
from, to | Obrigatórios. lat,lng cada um. |
mode | Separados por vírgulas: taxi, shared_taxi, okada, keke, danfo, ridehail, boat. Todos, se não for indicado. |
distanceM, durationS | O comprimento e a duração do percurso, se os tiver; as estimativas ficam melhores. |
at | A hora da viagem (RFC 3339): a noite e as horas de ponta custam mais. |
charter, rain | true para uma viagem fretada («drop»), ou com chuva. |
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: A_SUA_CHAVE_API"A resposta dá a currency e uma entrada estimates por modo com os preços low, typical e high (na unidade principal da moeda), um text redigido como 8 150–15 200 ₦, se é um preço por pessoa (perPerson), e as suas sources. Os modos que a lei exclui da viagem estão em notAllowed, com a regra e a sua fonte (os okadas são proibidos em grande parte de Lagos).
Trânsito em tempo real
curl "https://nways.ng/maps/v1/traffic?bbox=3.30,6.40,3.50,6.60" -H "X-NWays-Api-Key: A_SUA_CHAVE_API"As estradas com medições em tempo real dentro de um retângulo (minLng,minLat,maxLng,maxLat, com menos de 3° de largura), em linhas GeoJSON com um nível de congestionamento, para desenhar num mapa. As medições vêm, de forma anónima, dos telemóveis com N-Ways na estrada. Não as guarde em cache: mudam de minuto para minuto. Para as velocidades por estrada e por sentido, para as suas próprias horas de chegada, veja o feed de trânsito.
O endereço antigo
POST https://nways.ng/v1/routes (com from, to e stops) e /v1/fares/estimate continuam a funcionar para os parceiros que já os usam durante pelo menos 12 meses, mas as suas respostas acompanham a aplicação N-Ways. Passe para /maps/v1, cujas respostas só ganham campos.