É possível calcular a distância e a duração de um trajeto para várias origens e destinos usando o método ComputeRouteMatrix da API Routes Preferred. O ComputeRouteMatrix oferece suporte a chamadas gRPC de streaming e chamadas HTTP REST.
Com uma lista de pares de origem e destino, o ComputeRouteMatrix calcula a distância e a duração de um trajeto que começa em cada origem e termina em cada destino. Cada elemento do stream corresponde às informações de um único trajeto.
O método ComputeRouteMatrix tem várias vantagens em relação ao serviço de matriz de distância:
- O streaming permite que os elementos sejam retornados antes que toda a matriz seja calculada, reduzindo a latência.
- O
ComputeRouteMatrixtem opções detalhadas para o cálculo do tráfego, permitindo que você tome decisões de compensação de qualidade e latência. - As solicitações são executadas com maior prioridade na infraestrutura do Google, o que resulta em maior disponibilidade.
- É possível especificar informações de direção (sentido da viagem) e lado da estrada para os waypoints.
- Você pode solicitar que as informações de pedágio sejam retornadas, juntamente com a distância do trajeto e a previsão de chegada.
Ativar o método ComputeRouteMatrix
Antes de usar o método ComputeRouteMatrix no código, é necessário ativá-lo. Para mais informações sobre como ativar os métodos
da API Routes Preferred, consulte Introdução.
Usar o método ComputeRouteMatrix
O método ComputeRouteMatrix está disponível no endpoint v1 da API Routes Preferred.
Consulte a documentação a seguir para mais detalhes:
As etapas genéricas a seguir descrevem como usar o gRPC para chamar o método ComputeRouteMatrix:
Confira os protobuffers necessários no repositório googleapis:
https://github.com/googleapis/googleapis/tree/master/google/maps/routes
Alguns sistemas de build, como o Go, podem fazer isso automaticamente.
Usando a linguagem e o conjunto de ferramentas de build de sua preferência, gere o código de protobuffer relevante.
Gere sua solicitação. Dois metadados obrigatórios precisam ser enviados com a solicitação:
- X-Goog-Api-Key precisa ser definido como sua chave de API.
X-Goog-Fieldmask precisa ser definido como uma lista separada por vírgulas dos campos necessários da resposta. Por exemplo, X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status. É possível usar o caractere curinga (*) para indicar todos os campos, mas isso não é recomendado. Use o caractere curinga para testar e entender a resposta da API, mas liste explicitamente os campos que você quer na máscara de campo no código de produção.
Para mais informações sobre como criar a string de máscara de campo, consulte https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto. Desativar os campos que você não precisa pode reduzir a latência, já que esses campos podem exigir mais computação. A latência vai permanecer estável se você especificar os campos necessários e novos campos que exigem mais computação forem adicionados mais tarde.
Envie sua solicitação para
routespreferred.googleapis.com:443.É necessário usar o protocolo TLS.
Para exemplos de uso do método ComputeRouteMatrix, consulte
Exemplos de computação de uma matriz de trajetos (Beta).
Um recurso diferenciador do método ComputeRouteMatrix é que os códigos de erro podem ser retornados para todo o stream ou para elementos individuais. Por exemplo, a conexão de stream retorna um erro se a solicitação estiver malformada (por exemplo, se ela tiver zero origens). No entanto, se um erro se aplicar apenas a alguns elementos do stream (por exemplo, definir um ID de lugar inválido para uma origem), somente os elementos afetados pelo erro vão conter códigos de erro.
Não há garantia de que os elementos retornados pelo stream sejam retornados em qualquer ordem. Por isso, cada elemento 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 da lista de origem e destino.
Calcular taxas de pedágio
Para informações sobre como calcular taxas de pedágio, consulte Calcular taxas de pedágio.
Para exemplos de cálculo de taxas de pedágio, consulte Exemplos de computação de uma matriz de trajetos.