Exemplo 2 – Integração com a Trip API
No exemplo a seguir, temos uma rota entre as cidades de Taubaté e Barra Mansa, onde além da melhor rota queremos também consultar todos os postos de fiscalização e balanças presentes no trajeto.
Para isso, vamos utilizar a Trip API, acrescida com os parâmetros da POIs API. Em points
definimos os pontos de parada e suas coordenadas. No exemplo são apenas dois pontos, a origem e destino.
O parâmetro place
é o objeto que irá conter todos os parâmetros da POIs API. Definiremos da seguinte forma:
categories
– Definiremos a categoriaFISCALIZACAO
;subCategories
– Definiremos as subcategoriasBALANCAS
ePOSTO_FISCAL
;bufferRouteInMeters
– Raio de busca de 10 metros durante a rota;bufferStoppingPointsInMeters
– Raio de busca de 20 metros nos pontos de parada.
Como os postos de fiscalização e balanças fazem parte da base nativa do serviço, não há necessidade de informar o parâmetro onlyMyPlaces
.
A requisição completa pode ser conferida abaixo:
{ "points": [ { "latitude": -23.03058114872101, "longitude": -45.54850460771741, "siteId": "Taubaté" }, { "latitude": -22.535562949361026, "longitude": -44.19548915630202, "siteId": "Barra Mansa" } ], "place": { "categories": [ "FISCALIZACAO" ], "subCategories": [ "BALANCAS", "POSTO_FISCAL" ], "bufferRouteInMeters": 10, "bufferStoppingPointsInMeters": 20 } }
Na resposta, serão retornadas todas as informações referentes a rota. Dentre elas, a mais importante no exemplo será o array de objetos chamado legs
. Cada objeto presente em legs representa um trecho da rota e irá conter os dados referentes apenas a esse trecho.
Dentro de cada objeto contido em legs
será retornado um objeto placeCalculation
contendo as seguintes informações:
total
– Número inteiro contendo a quantidade de estabelecimentos encontrados na busca;places
– Array de objetos, onde cada objeto representa um estabelecimento. As seguintes informações serão retornadas:id
– Identificador único do estabelecimento;name
– Nome do estabelecimento;category
– Categoria ao qual o estabelecimento pertence;subcategory
– Subcategoria ao qual o estabelecimento pertence;address
– Objeto com os detalhes do endereço:street
– String para informar o endereço;number
– String para o número do estabelecimento;district
– (Opcional) String para o bairro;city
– String para cidade;state
– String para estado;zipcode
– String para CEP;point
– Array com as coordenadas do estabelecimento:latitude
– Coordenada da latitude em graus decimais;longitude
– Coordenada da longitude em graus decimais;
active
– Valor booleano que indica se o estabelecimento está ativo ou não;tags
– Tags do estabelecimento, caso houver;phones
– Telefones de contato do estabelecimento, caso houver.
A resposta completa pode ser conferida abaixo:
{ "id": "645b9c26bc072f0a972f3224", "clientId": "maplink", "totalDistance": 169159, "totalNominalDuration": 7988, "averageSpeed": 64.18, "legs": [ { "distance": 169159, "nominalDuration": 7988, "averageSpeed": 64.18, "points": "ddqkCbe_uGo@YaGgJwUa_@iBiCeCgEsCeEWm@mAk@\\S?OI??m@kA??GGGAGBkF~E??", "placeCalculation": { "total": 2, "places": [ { "id": "61b0c5960b666c4e05a1492f", "name": "Posto Fiscal Estado do Rio de Janeiro", "category": "FISCALIZACAO", "subCategory": "POSTO_FISCAL", "address": { "street": "Rodovia Presidente Dutra", "number": "KM 323+667", "city": "Itatiaia", "state": "RJ", "point": { "latitude": -22.50462288, "longitude": -44.6116333 } }, "active": true }, { "id": "61b0c57caeddba55769f812e", "name": "Praça de Balança Queluz", "category": "FISCALIZACAO", "subCategory": "BALANCAS", "address": { "street": "Rodovia Presidente Dutra", "number": "KM 000+827", "city": "Queluz", "state": "SP", "point": { "latitude": -22.5179217, "longitude": -44.7067999 } }, "active": true } ] } } ] }