Ao fazer uma solicitação, talvez seja necessário decidir se é melhor retornar os resultados mais precisos possíveis ou retornar os resultados o mais rápido possível. A API Routes oferece opções que permitem controlar a qualidade dos dados de resposta em comparação com a latência da resposta.
Configurar o nível de dados de tráfego
A API Routes fornece RoutingPreference (REST) e RoutingPreference (gRPC) que permitem especificar preferências de roteamento para calcular rotas. Essas preferências diferem na extensão em que consideram as condições de trânsito no cálculo da rota. Cada preferência de roteamento produz resultados que diferem em algum grau em relação à qualidade do trajeto, HEC estimado e latência de resposta.
As condições de tráfego caracterizam a taxa de fluxo de tráfego. Por exemplo:
- Quando não há congestionamento, as condições de tráfego são consideradas normais, e o tráfego flui na velocidade normal desimpedida.
- Ao se aproximar do horário de pico, a densidade do tráfego aumenta, o que torna o tráfego mais lento, produzindo condições de trânsito leves a moderadas.
- No tráfego de bumper para bumper, a taxa de fluxo interrompe-se, produzindo condições de tráfego pesadas.
Sem reconhecimento de trânsito
Quando você define a preferência de roteamento TRAFFIC_UNAWARE
, as rotas são calculadas sem considerar as condições de trânsito atuais. Essa preferência de roteamento fornece a menor latência de resposta (as respostas são retornadas mais rapidamente).
TRAFFIC_UNAWARE
é a configuração padrão.
Na resposta:
O ETA está contido na propriedade de resposta
duration
.As propriedades de resposta
duration
estaticDuration
contêm o mesmo valor.
Use essa preferência de roteamento quando quiser que as respostas sejam retornadas mais rapidamente e que os detalhes de roteamento aproximados sejam bons o suficiente.
Consciente sobre o trânsito
Quando você define a preferência de roteamento TRAFFIC_AWARE
, as rotas são calculadas considerando as condições de trânsito atuais. Como resultado, a rota e os detalhes da rota refletem com mais precisão as condições do mundo real. Como esse aumento na qualidade de dados acontece à custa da latência de resposta, as otimizações de desempenho são aplicadas para reduzir grande parte da latência.
Na resposta:
O ETA que considera o tráfego em tempo real está na propriedade de resposta
duration
.A propriedade de resposta
staticDuration
contém a duração da viagem no trajeto sem levar em consideração as condições de trânsito.
Use essa preferência de roteamento quando quiser detalhes de roteamento mais precisos do que TRAFFIC_UNAWARE
e, ainda assim, não se importará se as respostas forem retornadas com um aumento moderado da latência.
Percepção de tráfego ideal
Quando você define a preferência de roteamento TRAFFIC_AWARE_OPTIMAL
, as rotas são calculadas considerando as condições de tráfego atuais, mas nenhuma otimização de desempenho é aplicada. Neste modo, o servidor realiza uma pesquisa mais completa da rede de estradas para encontrar o trajeto ideal.
A preferência de trajeto TRAFFIC_AWARE_OPTIMAL
é equivalente ao modo usado por maps.google.com e pelo app para dispositivos móveis do Google Maps.
Ao usar essa opção com a matriz de rotas do Compute, o número de elementos em uma solicitação (número de origens × número de destinos) não pode exceder 100. Para mais informações sobre os limites da matriz de rotas do Compute, consulte Calcular uma matriz de rota.
Na resposta:
O ETA que considera o tráfego em tempo real está na propriedade de resposta
duration
.A propriedade de resposta
staticDuration
contém a duração da viagem no trajeto sem levar em consideração as condições de trânsito.
Essa preferência de roteamento fornece a latência de resposta mais alta, ou seja, as respostas retornam com o atraso mais longo. Use essa preferência de roteamento quando você quiser resultados da mais alta qualidade, sem considerar o tempo de resposta.
Efeito da definição do horário de partida
Opcionalmente, use a propriedade departureTime
para definir o horário desejado de uma partida. Se você não definir a propriedade departureTime
, o padrão será o horário da solicitação.
Para
TRAFFIC_UNAWARE
, não é possível definirdepartureTime
porque a escolha de trajeto e duração se baseia na rede rodoviária e nas condições médias de tráfego independentes do tempo.Para
TRAFFIC_AWARE
eTRAFFIC_AWARE_OPTIMAL
, que consideram as condições de tráfego em tempo real, o tráfego em tempo real torna-se mais importante quando mais próximo dedepartureTime
estiver. Quanto mais você definir o horário de partida para o futuro, maior será a consideração quanto às condições históricas de trânsito.
Exemplo de preferência de roteamento da configuração
O código JSON a seguir demonstra como definir a preferência de roteamento em um corpo de entidade de mensagem de solicitação.
{ "origin":{ "location":{ "latLng":{ "latitude":37.419734, "longitude":-122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude":37.417670, "longitude":-122.079595 } } }, "travelMode":"DRIVE", "routingPreference":"TRAFFIC_AWARE_OPTIMAL" }
Configurar a qualidade da polilinha
A API Routes permite solicitar informações sobre as condições de trânsito junto com uma polilinha que reconhece o tráfego. Consulte Solicitar polilinhas para mais informações.
A qualidade de uma polilinha pode ser descrita nos seguintes termos:
O número de pontos que compõem a polilinha
Quanto mais pontos houver, mais suave será a polilinha (especialmente em curvas).
A precisão dos pontos flutuantes
Os pontos são especificados como valores de latitude e longitude, representados no formato de ponto flutuante de precisão única. Isso funciona bem para valores pequenos (que podem ser representados com precisão), mas a precisão diminui à medida que os valores aumentam devido a erros de arredondamento de ponto flutuante.
Os métodos computeRoutes (REST) e ComputeRoutes (gRPC) são compatíveis com a opção de solicitação polylineQuality
para controlar a qualidade das polilinhas.
Exemplo de configuração de qualidade da polilinha
polylineQuality
especifica a qualidade da polilinha como HIGH_QUALITY
ou OVERVIEW
(padrão). Com OVERVIEW
, a polilinha é composta por um pequeno número de pontos e tem uma latência de solicitação menor que HIGH_QUALITY
.
Por exemplo, no corpo da solicitação:
{ "origin":{ "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude": 37.417670, "longitude": -122.079595 } } }, "travelMode": "DRIVE", "routingPreference": "TRAFFIC_AWARE", "polylineQuality": "HIGH_QUALITY", "polylineEncoding": "ENCODED_POLYLINE", "departureTime": "2023-10-15T15:01:23.045123456Z", ... }