Use a API Routes para calcular a distância e a duração de um trajeto 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 que começa em cada origem e termina em cada destino.
Receber uma matriz de rotas de transporte público
Também é possível calcular uma matriz de rotas em transporte público. Para ver um exemplo, consulte Gerar uma matriz de rotas em transporte público.
Limites de solicitações
Os métodos do Compute Route Matrix aplicam os seguintes limites de solicitação para waypoints que usam endereços ou IDs de lugar e para elementos. Os elementos são os trajetos entre cada origem e destino em uma matriz de rotas. Portanto, o número de elementos é o número de origens multiplicado pelo 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á exceder 100. Para mais informações sobreTRAFFIC_AWARE_OPTIMAL, consulte Especificar como e se os dados de trânsito devem ser incluídos.Se você especificar origens ou destinos usando endereço ou ID de lugar, poderá especificar até 50 no total dessa forma.
Erros de resposta
Um recurso dos métodos Compute Route Matrix é que os erros podem ser retornados para toda a resposta ou para elementos de resposta individuais. Por exemplo, a resposta inteira vai conter um erro se a solicitação estiver corrompida (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), somente os elementos afetados pelo erro vão retornar um código do erro.
Resultados do stream gRPC
O método gRPC ComputeRouteMatrix recebe uma lista de origens e destinos e retorna um stream com informações de trajeto para cada combinação de origem e destino. Como os resultados são retornados como um stream, você não precisa esperar 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 alguma
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 do trajeto é equivalente a destinations[destination_index].
Essas matrizes são indexadas em zero. É importante armazenar as ordens das listas de origem e destino.
Exemplos de Compute Route Matrix
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 um trajeto de cada origem para cada destino, então a resposta contém quatro trajetos.
Na matriz, o primeiro elemento está no índice 0, o segundo no í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,statuseconditionpara cada trajeto. 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 waypoints de origem e destino.
Identifique cada trajeto na resposta usando os campos de resposta originIndex e destinationIndex. Por exemplo, um originIndex de 1 na resposta corresponde a um trajeto calculado com base no 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 os exemplos em Exemplo de solicitação gRPC. O exemplo de Java nessa página chama as APIs Compute Routes e Compute Route Matrix.