Acessar matriz de rota

Use a API Routes para calcular a distância e a duração de uma rota para várias origens e destinos chamando o método computeRouteMatrix (REST) ou o método de streaming ComputeRouteMatrix (gRPC).

Dada uma lista de origens e destinos, o método calcula a distância e a duração de um trajeto que começa em cada origem e termina em cada destino.

Acessar uma matriz de rotas de transporte público

Também é possível calcular uma matriz de rotas no transporte público. Confira um exemplo em Como conferir uma matriz de rotas no Google Transit.

Limites de solicitações

Os métodos da Compute Route Matrix aplicam os seguintes limites de solicitação para pontos de passagem usando endereços ou placeIDs e para elementos. Os elementos são as rotas entre cada origem e destino em uma matriz de rotas. Portanto, o número de elementos é o número de origens vezes o número de destinos. Por exemplo, se você tiver 10 origens e 10 destinos, terá 100 elementos:

  • O número de elementos não pode exceder 625 para rotas que não são TRANSIT.

  • Se você especificar uma rota TRANSIT, o número de elementos não poderá exceder 100.

  • Se você especificar TRAFFIC_AWARE_OPTIMAL, o número de elementos não poderá ultrapassar 100. Para mais informações sobre TRAFFIC_AWARE_OPTIMAL, consulte Especificar como e se incluir dados de tráfego.

  • Se você especificar origens ou destinos usando o endereço ou o ID do lugar, especificará até 50 no total.

Erros de resposta

Um recurso dos métodos da matriz de rotas de computação é que os erros podem ser retornados para toda a resposta ou para elementos de resposta individuais. Por exemplo, a resposta inteira contém um erro se a solicitação estiver com formato incorreto (por exemplo, se tiver zero origens).

No entanto, se um erro se aplicar a um subconjunto de elementos na resposta (por exemplo, uma rota não pode ser calculada para uma combinação de origem e destino), apenas os elementos afetados pelo erro vão retornar um código de erro.

Resultados do fluxo gRPC

O método gRPC ComputeRouteMatrix recebe uma lista de origens e destinos e retorna um fluxo com informações de rota para cada combinação de origem e destino. Como os resultados são retornados como um fluxo, você não precisa esperar até que todas as combinações possíveis de rota sejam calculadas antes de começar a processar os resultados.

Não há garantia de que os elementos retornados pelo stream serão retornados em qualquer ordem. Portanto, cada elemento de resposta contém um origin_index e um destination_index. Para as origens e destinos especificados pela solicitação, a origem da rota é equivalente a origins[origin_index] para um determinado elemento e o destino da rota é equivalente a destinations[destination_index]. Essas matrizes são indexadas com zero. É importante armazenar as ordens de lista de origem e destino.

Exemplos de cálculo de uma matriz de rotas

Use o método computeRouteMatrix em uma solicitação HTTP para calcular uma matriz de rotas.

Exemplo HTTP

O exemplo a seguir mostra uma solicitação HTTP computeRouteMatrix. Neste exemplo, você:

  • Especifique uma matriz de dois pontos de passagem de origem e dois de destino. O método calcula uma rota de cada origem para cada destino, de modo que a resposta contenha quatro rotas.

    Na matriz, o primeiro elemento está no índice 0, o segundo é o índice 1 e assim por diante.

  • Inclua uma máscara de campo de resposta para especificar quais campos da resposta (REST) ou ComputeRoutesResponse (gRPC) serão retornados. Neste exemplo, configure a solicitação para retornar originIndex, destinationIndex, duration, distanceMeters, status e condition para cada rota. Para mais informações, consulte Escolher campos para retornar.

curl -X POST -d '{
  "origins": [
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.420761,
            "longitude": -122.081356
          }
        }
      },
      "routeModifiers": { "avoid_ferries": true}
    },
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.403184,
            "longitude": -122.097371
          }
        }
      },
      "routeModifiers": { "avoid_ferries": true}
    }
  ],
  "destinations": [
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.420999,
            "longitude": -122.086894
          }
        }
      }
    },
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.383047,
            "longitude": -122.044651
          }
        }
      }
    }
  ],
  "travelMode": "DRIVE",
  "routingPreference": "TRAFFIC_AWARE"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status,condition' \
'https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix'

A resposta contém as quatro rotas possíveis para a combinação de todos os pontos de referência de origem e destino.

Identifique cada rota na resposta usando os campos de resposta originIndex e destinationIndex. Por exemplo, um originIndex de 1 na resposta corresponde a uma rota calculada a partir do ponto de passagem no índice 1 da matriz origins na solicitação.

[
    {
        "originIndex": 0,
        "destinationIndex": 0,
        "status": {},
        "distanceMeters": 822,
        "duration": "160s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 1,
        "destinationIndex": 0,
        "status": {},
        "distanceMeters": 2919,
        "duration": "361s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 1,
        "destinationIndex": 1,
        "status": {},
        "distanceMeters": 5598,
        "duration": "402s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 0,
        "destinationIndex": 1,
        "status": {},
        "distanceMeters": 7259,
        "duration": "712s",
        "condition": "ROUTE_EXISTS"
    }
]

Exemplos de gRPC

Para solicitações gRPC de exemplo, consulte os exemplos em Exemplo de solicitação gRPC. O exemplo em Java nesta página chama as rotas de computação e a Compute Route Matrix.