Exemplo 2 – Pedágio com tarifas por faixa de horário
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 pedágio de Sarmiento, na Argentina. Conforme a tabela acima, esse pedágio possui valores condicionantes para os horários de pico.
A requisição realizada para a Directions API pode ser conferida abaixo:
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={API_KEY}
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, como no exemplo abaixo:
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.
O resultado pode ser visualizado no mapa abaixo:
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.
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 se há 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 dias da semana a qual se aplica a tarifa. Os 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:
{ "id": "658084734d0aa15a056e8f31", "clientId": "maplink", "totalDistance": 327, "totalNominalDuration": 31, "averageSpeed": 52.00, "tollCosts": 508.03, "legs": [ { "distance": 327, "nominalDuration": 31, "averageSpeed": 52.0, "points": "zh~qEfpncJJ]HM\\Q\\C^LRTJb@@RAVOj@?XS\\aDvF", "tollCalculation": { "tolls": [ { "id": "1032", "name": "Pórtico - Sarmiento", "address": "Avenida Sarmiento, 4254", "city": " ", "state": { "name": "Ciudad Autonoma de Buenos Aires", "code": "Ciudad Autonoma de Buenos Aires" }, "country": "Argentina", "concession": "Ausa", "direction": "WEST", "coordinates": { "latitude": -34.5671991, "longitude": -58.4063059 }, "serviceTypes": [], "price": 508.03, "conditions": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY" ], "subConditions": [ { "periods": [ "NORMAL" ], "subConditions": [ { "timesWindow": [ "16:00:00 - 19:59:59", "07:00:00 - 10:59:59" ], "subConditions": [ { "billingsType": [ "NORMAL" ], "value": 1221.56 } ] } ] } ] }, { "daysOfWeek": [ "SUNDAY", "SATURDAY" ], "subConditions": [ { "periods": [ "NORMAL" ], "subConditions": [ { "timesWindow": [ "17:00:00 - 20:59:59" ], "subConditions": [ { "billingsType": [ "NORMAL" ], "value": 1221.56 } ] } ] } ] }, { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SUNDAY", "SATURDAY" ], "subConditions": [ { "periods": [ "HOLIDAY" ], "subConditions": [ { "timesWindow": [ "17:00:00 - 20:59:59" ], "subConditions": [ { "billingsType": [ "NORMAL" ], "value": 1221.56 } ] } ] } ] } ] } ], "legTotalCost": 508.03, "vehicleType": "TRUCK_WITH_FOUR_DOUBLE_AXLES" } } ], "source": "MAPLINK" }