Nesse exemplo, vamos considerar como a Toll for Maps API retorna os valores de praças de pedágio com valores diferente para dias de semana, horários ou temporada.
Algumas praças de pedágio, principalmente na Argentina e no Chile, possuem valores condicionantes que variam conforme o dia, horário ou época do ano em que a rota está sendo realizada.
Por exemplo, na Argentina as concessionárias possuem tarifas especiais para horários de pico, finais de semana e feriados, ou épocas específicas do ano como baixa temporada e alta temporada.
Abaixo segue a tabela de tarifas da concessionária AUSA da Argentina, onde são disponibilizadas dois tipos de tarifas, uma para horário comum e outra para horário de pico.
No Brasil, esse tipo de tarifa é mais raro, mas algumas concessionárias já cobram valores diferentes em finais de semana e feriados.
Nesse exemplo temos um rota com um caminhão de 4 eixos que passará pelo pórtico de Sarmiento, na Argentina. Conforme a tabela acima, esse pórtico possui valores condicionantes para os horários de pico. Abaixo a request realizada para a Directions API:
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
Abaixo temos a requisição para a Toll for Maps API, onde a resposta da Directions será enviada no corpo da requisição para o endpoint: https://api.maplink.global/toll/v1/directions, exemplo:
curl -X POST "https://api.maplink.global/toll/v1/directions?vehicleType=TRUCK_WITH_FOUR_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
Assim como nos exemplos anteriores, 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 objeto em 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.
Dentro de cada objeto em tolls teremos as informações de cada pedágio. Com as seguintes diferenças:
-
price - Valor normal do pedágio na moeda local, cobrado em horários sem ser pico ou alguma condicionante;
-
conditions - Array com todos os valores condicionais do pedágio. Informa haver variações de preços devido alguma condição de dia da semana, horário e se é realizado com pagamento automático ou manual. No caso desse exemplo, temos as seguintes informações:
-
daysOfWeek - Array com os diaa da semana a qual se aplica a tarifa. Valores possíveis são: [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY]
-
subConditions - Indica subcondições para o dia da semana a qual se aplica a tarifa;
-
periods - Array com os períodos em que se aplica a tarifa no dia da semana. Neste exemplo, há o período “NORMAL” e o período “HOLIDAY”. Os valores possíveis são: [NORMAL, HOLIDAY, LOW_SEASON, HIGH_SEASON].
-
timesWindow - Array com os intervalos de horário no formato ["HH:mm:ss = HH:mm:ss"].
-
billingsType - Tipo de cobrança de pedágio. Valores possíveis: [NORMAL, TAG];
-
value - Valor da tarifa condicionante do pedágio na moeda local.
-
-
A resposta completa pode ser conferida abaixo:
{
"results": [
{
"legs": [
{
"tolls": [
{
"id": "869",
"name": "Peaje - Ruta 202",
"address": "RUTA 9, KM 25.27",
"city": " ",
"state": {
"name": "Ciudad Autonoma de Buenos Aires",
"code": "CABA"
},
"country": "Argentina",
"concession": "Alto Pistas Del Sol",
"direction": "WEST",
"coordinates": {
"latitude": -34.4863,
"longitude": -58.605575
},
"serviceTypes": [],
"price": 150.00,
"conditions": [
{
"daysOfWeek": [
"TUESDAY",
"WEDNESDAY",
"THURSDAY",
"MONDAY",
"FRIDAY"
],
"subConditions": [
{
"periods": [
"NORMAL"
],
"subConditions": [
{
"timesWindow": [
"07:00:00 - 10:59:59",
"16:00:00 - 19:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 142.50
},
{
"billingsType": [
"NORMAL"
],
"value": 180.00
}
]
},
{
"timesWindow": [
"00:00:00 - 06:59:59",
"11:00:00 - 15:59:59",
"20:00:00 - 23:59:59"
],
"subConditions": [
{
"billingsType": [
"NORMAL"
],
"value": 150.00
},
{
"billingsType": [
"TAG"
],
"value": 82.50
}
]
}
]
},
{
"periods": [
"HOLIDAY"
],
"subConditions": [
{
"timesWindow": [
"11:00:00 - 16:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 142.50
},
{
"billingsType": [
"NORMAL"
],
"value": 180.00
}
]
},
{
"timesWindow": [
"00:00:00 - 10:59:59",
"17:00:00 - 23:59:59"
],
"subConditions": [
{
"billingsType": [
"NORMAL"
],
"value": 150.00
},
{
"billingsType": [
"TAG"
],
"value": 82.50
}
]
}
]
}
]
},
{
"daysOfWeek": [
"SATURDAY",
"SUNDAY"
],
"subConditions": [
{
"periods": [
"HOLIDAY",
"NORMAL"
],
"subConditions": [
{
"timesWindow": [
"11:00:00 - 16:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 142.50
},
{
"billingsType": [
"NORMAL"
],
"value": 180.00
}
]
},
{
"timesWindow": [
"00:00:00 - 10:59:59",
"17:00:00 - 23:59:59"
],
"subConditions": [
{
"billingsType": [
"NORMAL"
],
"value": 150.00
},
{
"billingsType": [
"TAG"
],
"value": 82.50
}
]
}
]
}
]
}
]
},
{
"id": "879",
"name": "Peaje - Pilar",
"address": "RUTA 8, KM 34.84",
"city": " ",
"state": {
"name": "Ciudad Autonoma de Buenos Aires",
"code": "CABA"
},
"country": "Argentina",
"concession": "Alto Pistas Del Sol",
"direction": "WEST",
"coordinates": {
"latitude": -34.461502,
"longitude": -58.707112
},
"serviceTypes": [],
"price": 180.00,
"conditions": [
{
"daysOfWeek": [
"TUESDAY",
"WEDNESDAY",
"THURSDAY",
"MONDAY",
"FRIDAY"
],
"subConditions": [
{
"periods": [
"HOLIDAY"
],
"subConditions": [
{
"timesWindow": [
"11:00:00 - 16:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 171.00
},
{
"billingsType": [
"NORMAL"
],
"value": 200.00
}
]
},
{
"timesWindow": [
"00:00:00 - 10:59:59",
"17:00:00 - 23:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 99.00
},
{
"billingsType": [
"NORMAL"
],
"value": 180.00
}
]
}
]
},
{
"periods": [
"NORMAL"
],
"subConditions": [
{
"timesWindow": [
"07:00:00 - 10:59:59",
"16:00:00 - 19:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 171.00
},
{
"billingsType": [
"NORMAL"
],
"value": 200.00
}
]
},
{
"timesWindow": [
"00:00:00 - 06:59:59",
"11:00:00 - 15:59:59",
"20:00:00 - 23:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 99.00
},
{
"billingsType": [
"NORMAL"
],
"value": 180.00
}
]
}
]
}
]
},
{
"daysOfWeek": [
"SATURDAY",
"SUNDAY"
],
"subConditions": [
{
"periods": [
"HOLIDAY",
"NORMAL"
],
"subConditions": [
{
"timesWindow": [
"11:00:00 - 16:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 171.00
},
{
"billingsType": [
"NORMAL"
],
"value": 200.00
}
]
},
{
"timesWindow": [
"00:00:00 - 10:59:59",
"17:00:00 - 23:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 99.00
},
{
"billingsType": [
"NORMAL"
],
"value": 180.00
}
]
}
]
}
]
}
]
},
{
"id": "972",
"name": "Peaje - Larena",
"address": "Ruta 8, KM 66.2",
"city": " ",
"state": {
"name": "Ciudad Autonoma de Buenos Aires",
"code": "CABA"
},
"country": "Argentina",
"concession": "Corredores Viales",
"direction": "WEST",
"coordinates": {
"latitude": -34.403416,
"longitude": -59.012973
},
"serviceTypes": [],
"price": 200.00
},
{
"id": "970",
"name": "Peaje - Solís",
"address": "Ruta 8, KM 102",
"concession": "Corredores Viales",
"direction": "WEST",
"coordinates": {
"latitude": -34.284922,
"longitude": -59.362342
},
"serviceTypes": [],
"price": 40.00
}
],
"legTotalCost": 570.00
}
],
"totalCost": 570.00
}
]
}