Às vezes, você pode querer planejar o trajeto que o app oferece aos usuários. O uso de um token de rota da API Routes, da API Routes Preferred ou da API Route Optimization pode ajudar a especificar duas coisas para o trajeto planejado:
Uma polilinha do trajeto
Seus objetivos de trajeto
Confira alguns exemplos de objetivos de roteamento:
Minimizar o tempo até a entrega: uma empresa que entrega comida pode querer minimizar o tempo necessário para entregar a comida.
Minimizar o tempo de viagem ou o consumo de combustível: uma empresa de logística pode querer melhorar a eficiência dos motoristas e reduzir os custos de combustível.
Minimizar o tempo até o destino: uma operação de despacho de serviço pode querer minimizar o tempo necessário para que os operadores fiquem em uma solicitação de job.
Reduzir os custos e aumentar a segurança: uma empresa de compartilhamento de viagens pode querer encontre um trajeto que custe menos para os passageiros e evite determinadas áreas por segurança motivos.
Para mais informações sobre como planejar uma rota usando um token de rota, consulte Solicitar um token de rota na API Routes e Transição de polilinhas e tokens de rota na API Route Optimization.
Por que usar um token de rota para objetivos de rota
Com um token de rota da API Routes, da API Routes Preferred ou da API Route Optimization, você tem mais controle sobre a rota fornecida:
Planeje uma rota com antecedência para que o SDK de navegação a use quando possível.
Escolher a melhor rota para o SDK do Navigation usar. Se você solicitar tokens de rota ao gerar rotas na API Routes, vai receber um token de rota para cada rota gerada. Em seguida, escolha o token da rota que você quer usar ao transmiti-lo ao SDK de navegação.
Estime o preço com antecedência, incluindo estimativas de ETA e distância. Embora o custo e o tempo reais possam variar, essa estimativa reduz a diferença entre o custo esperado e o real da rota.
Especifique objetivos de rota mais avançados, como trajetos ecológicos ou o o trajeto mais curto.
Como os tokens de rota funcionam
É possível usar a API Routes, a API Routes Preferred ou a API Route Optimization para planejar uma rota usando objetivos de rota. Você pode transmitir um token de rota retornado por qualquer uma dessas APIs ao SDK de navegação para orientar como ele roteia seu veículo.
Veja o que acontece quando você solicita e usa um token de rota:
a API Routes, API Routes Preferred ou A API Route Optimization retorna um token de rota criptografado que inclui a polilinha e os objetivos do trajeto.
Você transmite o token de rota para o SDK do Navigation.
O SDK de navegação recupera a rota ou, se ela não estiver disponível devido a condições variáveis, recupera a melhor rota correspondente.
Durante o trajeto, se o trânsito ou outras condições da via mudarem ou se um veículo desviar do trajeto planejado, as rotas modificadas vão tentar corresponder à melhor rota com base nos objetivos do trajeto no token.
Esse processo maximiza a distância entre o trajeto real e o planejado.
Por que um trajeto planejado pode não ser seguido à risca
Pense na rota planejada e nos objetivos da rota como diretrizes a serem seguidas: elas não são prescritivas. É possível que você note uma diferença entre o trajeto planejado trajeto fornecido pela navegação guiada devido às diferenças na estrada condições, local de início ou outros parâmetros que foram alterados desde que você criou o trajeto planejado. Essa diferença pode resultar em uma incompatibilidade suas metas planejadas e reais de distância e HEC, entre outras viagens importantes qualidades
Planejar uma rota usando um token de rota
É possível planejar uma rota criando um token de rota e transmitindo-o ao SDK de navegação, conforme descrito nas etapas a seguir:
Etapa 1: criar um token de trajeto usando a API Routes, a API Preferred Routes ou a API Route Optimization
Solicite um token de rota com um dos seguintes métodos:
API Routes:
computeRoutes
. Para mais informações sobre como solicitar um token de rota na API Routes, consulte Como calcular uma rota e Solicitar um token de rota.API Routes Preferred:
computeCustomRoutes
. Para mais informações sobre como solicitar um token de rota no API Routes Preferred, consulte Planejar um trajeto.API Route Optimization:
optimizeTours
oubatchOptimizeTours
. Para mais informações sobre como solicitar na API Route Optimization, consulte Polilinhas de transição e rotas Tokens.
Configure sua solicitação da API Routes ou da API Routes Preferred para atender aos requisitos de uso de um token de rota:
- Definir
travel_mode
comoDRIVING
ouTWO_WHEELER
- Defina
routing_preference
comoTRAFFIC_AWARE
ouTRAFFIC_AWARE_OPTIMAL
- NÃO use waypoints
Via
- Definir
Etapa 2: transmitir o token da rota para o SDK do Navigation
Armazene o token de rota: no SDK do Navigation, configure uma string para armazenar o token de rota. Exemplo:
String routeToken = "route token returned by Routes API";
Exemplo de um token de rota retornado:
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }
Transmita o token de rota para o SDK Navigation usando o método
Navigator.setDestinations
, especificando os mesmos pontos de passagem de destino usados ao criar o token de rota:setDestinations(List
destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions); Exemplo:
CustomRoutesOptions customRoutesOptions = CustomRoutesOptions.builder() .setRouteToken(routeToken) .setTravelMode(TravelMode.DRIVING) .build();
O método Navigator.setDestinations
retorna o status da solicitação. Se
ele encontra um trajeto da localização do veículo até o destino especificado,
ela retornará RouteStatus.OK
.
Para mais informações sobre esse método, consulte
Navigator.setDestinations
Exemplo
O exemplo de código abaixo demonstra como especificar um trajeto planejado usando um token de trajeto.
ArrayList <Waypoint> destinations = Lists.newArrayList();
Waypoint waypoint1 =
Waypoint.builder()
.setLatLng(10, 20)
.setTitle("title")
.setVehicleStopover(true)
.build();
destinations.add(waypoint1);
Waypoint waypoint2 =
Waypoint.builder()
.setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
.setTitle("title")
.setVehicleStopover(true)
.build()
destinations.add(waypoint2);
String routeToken = "route token returned by Routes API";
CustomRoutesOptions customRoutesOptions =
CustomRoutesOptions.builder()
.setRouteToken(routeToken)
.setTravelMode(TravelMode.DRIVING)
.build();
// Existing flow to get a Navigator.
NavigationApi.getNavigator(...);
// Existing flow for requesting routes.
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions);
// Or with display options.
DisplayOptions displayOptions = new DisplayOptions();
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions, displayOptions);
Como os tokens de rota e o SDK do Navigation interagem
Veja como o trajeto gerado pelo SDK do Navigation e o rota no token de rota interagem:
Substitui qualquer destino definido anteriormente.
Usa o local de partida do veículo.
Ajusta-se às condições da via e do trânsito. Consulte Por que um trajeto planejado pode não ser seguido à risca.
Ignora as seguintes opções relacionadas ao roteamento como desnecessárias:
avoidsHighways
avoidsTolls
avoidsFerries
licensePlateRestriction
Seguidores:
Opções relacionadas a pontos de passagem, como a preferência de acostamento.
Objetivos da rota. Se o SDK de navegação precisar ajustar a rota retornada, ele vai usar os objetivos de rota especificados ao solicitar o token de rota. Por isso, você deve usar a mesma opções relacionadas a waypoints especificadas na API Routes.