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 subcategoriasBALANCASePOSTO_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
}
]
}
}
]
}