POIs

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 categoria FISCALIZACAO;
  • subCategories – Definiremos as subcategorias BALANCAS e POSTO_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
                    }
                ]
            }
        }
    ]
}