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).

Com uma lista de origens e destinos, o método calcula a distância e a duração de uma rota, começando em cada origem e terminando em cada destino.

Acessar uma matriz de trajetos de transporte público

Também é possível calcular uma matriz de rotas em trânsito. Por exemplo, consulte Acessar uma matriz de trajetos em transporte público.

Limites de solicitações

Os métodos do Compute Route Matrix impõem os seguintes limites de solicitação para waypoints que usam address ou placeIDs e para elementos. Os elementos são as rotas entre cada origem e destino em uma matriz de rota. 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 sejam TRANSIT.

  • Se você especificar um trajeto 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á exceder 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, poderá especificar até 50 no total dessa maneira.

Erros de resposta

Um recurso dos métodos do Compute Route Matrix é que os erros podem ser retornados para toda a resposta ou para elementos de resposta individuais. Por exemplo, toda a resposta conterá um erro se a solicitação for inválida (por exemplo, se ela tiver origens zero).

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 retornarão um código de erro.

Resultados do fluxo gRPC

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

Não há garantia de que os elementos retornados pelo stream sejam retornados em qualquer ordem. Portanto, cada elemento de resposta contém um origin_index e um destination_index. Para as origens e os 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 zero. É importante armazenar os pedidos da lista de origem e destino.

Exemplos de matriz de rota

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 waypoints 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á em um índice de 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 os campos a serem retornados.

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 os quatro trajetos possíveis para a combinação de todos os waypoints 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 um trajeto calculado a partir do waypoint 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 exemplos de solicitações gRPC, consulte os exemplos em Exemplo de solicitação gRPC. O exemplo em Java dessa página chama a Compute Routes e a Compute Route Matrix.