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 um trajeto começando em cada origem e terminando em cada destino.

Receber uma matriz de trajeto de transporte público

Você também pode calcular uma matriz de trajeto em transporte público. Por exemplo, consulte Ver uma matriz de trajeto em transporte público.

Limites de solicitações

Os métodos Compute Route Matrix aplicam os seguintes limites de solicitação para elementos e waypoints que usam address ou placeIDs. 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, você 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á 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 ID do lugar, poderá especificar até 50 dessa maneira.

Erros de resposta

Um recurso dos métodos da Compute Route Matrix é que os erros podem ser retornados para toda a resposta ou para elementos de resposta individuais. Por exemplo, se a solicitação for malformada, a resposta inteira vai conter um erro (por exemplo, se não tiver 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), somente os elementos afetados pelo erro retornarão um código de erro.

Resultados do stream gRPC

O método ComputeRouteMatrix recebe uma lista de origens e destinos e retorna um stream contendo 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 rotas possíveis 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 nenhuma 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 do trajeto é equivalente a origins[origin_index] para um determinado elemento, e o destino é equivalente a destinations[destination_index]. Essas matrizes são indexadas em zero. É importante armazenar os pedidos das listas de origem e destino.

Exemplos de Calcular uma matriz de rota

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

Exemplo HTTP

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

  • Especifique uma matriz com dois waypoints de origem e dois de destino. O método calcula uma rota de cada origem até 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 de response (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 as quatro rotas 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 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 ver exemplos de solicitações gRPC, consulte este link. O exemplo em Java nesta página chama o Compute Routes e a Compute Route Matrix.