Planejar um trajeto

Às vezes, é recomendável planejar o trajeto que o app vai oferecer aos usuários. Ao usar um token de rota da API Routes (ou da API Routes Preferred) duas coisas para o trajeto planejado:

  • Uma polilinha do trajeto

  • Objetivos da sua rota

Por exemplo, aqui estão alguns exemplos de objetivos de roteamento que você pode ter:

  • Minimizar o tempo até a entrega: uma empresa que entrega comida pode querer minimizar o tempo que leva 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 que leva para os operadores acessarem uma solicitação de job.

  • Reduzir os custos e aumentar a segurança: pode ser útil para uma empresa de transporte por aplicativo um trajeto que custa menos para os passageiros e evita determinadas áreas por motivos de segurança motivos.

.

Para mais informações sobre como planejar uma rota usando um token de rota, consulte Solicite um token de rota.

Por que usar um token de rota para objetivos de rota

Com um token de rota da API Routes ou Routes Preferred, você tem mais controle sobre a rota fornecida:

  • Planeje um trajeto com antecedência para usar pelo SDK do Navigation. quando possível.

  • Escolha o melhor trajeto para o SDK do Navigation. Se você solicitar tokens de rota ao gerar rotas na API Routes, você recebe um token para cada rota gerada. É possível escolher o token para a rota que deseja usar ao passá-la para o SDK do Navigation.

  • Estime o preço com antecedência, incluindo estimativas de HEC e distância. Embora o custo e o tempo reais possam variar, essa estimativa reduz a lacuna entre custo esperado e real do trajeto.

  • Especifique objetivos de rotas mais avançadas, como trajetos ecológicos ou as rotas trajeto.

.

Como funcionam os tokens de rota da API Routes

Você pode usar a API Routes ou Routes Preferred para planejar um trajeto usando os objetivos dele. A API Routes retorna uma token de rota que pode ser transmitido ao SDK do Navigation para orientar como ele e rotas do seu veículo.

O que acontece quando você solicita e usa um token de rota da API Routes:

  1. A API Routes retorna um token de rota criptografado que inclui a rota objetivos de polilinha e rota.

  2. Você transmite o token da rota para o SDK do Navigation.

  3. O SDK do Navigation recupera o trajeto ou, se ele não estiver disponível devido a mudanças nas condições, ele recupera o melhor trajeto.

  4. Durante o trajeto, se o trânsito ou outras condições da via mudarem ou se um veículo se desvia do trajeto planejado, as rotas modificadas continuam tenta corresponder a melhor rota com base nos objetivos dela 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 exatamente

Pense nos objetivos e na rota planejada como diretrizes a serem seguidas: não são prescritivos. É 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

Você pode planejar uma rota criando um token de rota e passando-o para do SDK do Navigation, conforme descrito nas etapas a seguir:

Etapa 1: criar um token de rota usando a API Routes ou Routes Preferred

  1. 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 calcule uma rota e Solicite um token de rota.

    • API Routes Preferred: computeCustomRoutes. Para mais informações sobre como solicitar um token de rota na API Routes Preferred, consulte Planejar uma rota

  2. Configure sua solicitação de rota para atender aos requisitos de uso de uma rota. token:

    • Defina travel_mode como DRIVING
    • Definir routing_preference como TRAFFIC_AWARE ou TRAFFIC_AWARE_OPTIMAL
    • NÃO use waypoints Via

Etapa 2: transmitir o token da rota para o SDK do Navigation

  1. 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",
    }
    
  2. Transmita o token da rota para o SDK do Navigation usando o método Navigator.setDestinations, especificando o mesmo destino waypoints usados ao criar o token de rota:

    setDestinations(List destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);

    Exemplo:

    CustomRoutesOptions customRoutesOptions =
          CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .build();
.

O método Navigator.setDestinations retorna o status da solicitação. Se ele encontra um trajeto do local do veículo até o destino especificado, ela retorna RouteStatus.OK.

Para mais informações sobre esse método, consulte Navigator.setDestinations

Exemplo

O exemplo de código a seguir demonstra como especificar um trajeto planejado usando uma token de rota.

    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(CustomRoutesOptions.TravelMode.TWO_WHEELER)
          .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 destinos definidos 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 ao waypoint, como a preferência do lado da via.

    • Objetivos da rota. Se o SDK do Navigation precisar ajustar a rota retornada, ele usará os objetivos do trajeto que você especificou ao solicitando o token de rota. Por isso, você deve usar a mesma opções relacionadas a waypoints que você especificou na API Routes.