Veremos um exemplo de como utilizar a Toll for Maps para obter os pedágios de uma rota gerada pela Directions API do Google.
Neste exemplo, temos um cálculo de pedágio simples para uma rota de 3 pontos de um trecho da Rodovia Ayrton Senna em São Paulo, vinda da resposta da Directions API, cuja requisição original foi a seguinte:
https://maps.googleapis.com/maps/api/directions/json?origin=-23.465395,-46.375007&waypoints=-23.465957,-46.371015&destination=-23.467154,-46.365598&mode=driving&key={CHAVE_API}
Requisição
A resposta da Directions API será usada como body na request para o endpoint https://api.maplink.global/toll/v1/directions, exemplo:
curl -X POST "https://api.maplink.global/toll/v1/directions?vehicleType=TRUCK_WITH_TWO_DOUBLE_AXLES" -H "Authorization: Bearer 3O0d0YjOL72Roqp5CrnGwh5yvgKH" -H "Content-Type: application/json" -d @C:\temp\Directions_Response.json
Onde:
-
vehicleType - Tipo de veículo a calcular o pedágio;
-
Directions_Response.json - Resposta da Directions API contendo a rota.
Resposta
A resposta virá no formato JSON. Em results serão obtidos os valores de pedágio de cada rota. Caso a Directions API for processada com rotas alternativas, será retornado 3 results, sendo 1 resultado para cada rota.
Dentro de cada results será retornado um objeto legs que corresponde a rota em si. O objeto irá conter o valor total da rota em totalCost e um objeto tolls com os valores e informações de cada pedágio presentes na rota.
Cada objeto retornado em tolls representa um pedágio e irá conter as seguintes informações:
-
name - Nome do pedágio;
-
address - Endereço do pedágio;
-
city - Cidade do pedágio;
-
state - Objeto contendo o nome do estado (name) e sua sigla (code);
-
country - País do pedágio;
-
concession - Concessionária responsável pelo pedágio;
-
coordinates - Coordenadas (latitude e longitude) do pedágio;
-
price - Valor por pedágio;
-
serviceTypes - Array com códigos para integração com sistemas de pagamento automático. Atualmente disponível apenas no Brasil (Código ANTT, Via Fácil e SemPararPay);
-
serviceId - Código para a integração;
-
name - Descrição do código do serviço.
-
A resposta completa pode ser conferida abaixo:
Em results serão obtidos os valores de pedágio de cada rota. Caso a Directions API tenha sido processada com rotas alternativas, será retornado 3 results, sendo 1 resultado para cada rota.
{
"results": [
{
"legs": [
{
"tolls": [
{
"id": "17",
"name": "Pedágio - Itaquaquecetuba Leste",
"address": "SP 070 - Rod. Ayrton Senna - Km 32,9",
"city": "Itaquaquecetuba",
"state": {
"name": "São Paulo",
"code": "SP"
},
"country": "Brasil",
"concession": "Ecopistas",
"coordinates": {
"latitude": -23.4656821,
"longitude": -46.3727036
},
"serviceTypes": [
{
"serviceId": "80",
"name": "Via Facil"
},
{
"serviceId": "35350700329000103",
"name": "ANTTCODE"
}
],
"price": 7.8
}
],
"legTotalCost": 7.8
},
{
"tolls": [],
"legTotalCost": 0
}
],
"totalCost": 7.8
}
]
}