Tokens de rota

Quando você está determinando o melhor trajeto para uma viagem de transporte compartilhado, o trajeto mais rápido nem sempre é a melhor opção. Você pode personalizar seu trajeto. A API Routes Preferred permite personalizar uma rota especificando um objetivo usando o método ComputeCustomRoutes.

Quando você cria uma rota personalizada, a API Routes Preferred gera um token de rota. Em seguida, você pode transmitir o token ao SDK do Navigation para Android e recuperar a rota personalizada.

Para mais informações sobre como criar uma rota personalizada, consulte Criar rotas personalizadas.

Como recuperar uma rota personalizada

Você pode recuperar uma rota personalizada transmitindo um token de rota ao SDK do Navigation para Android usando o método Navigator.setDestinations.

setDestinations(List<Waypoint> destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);

A rota personalizada substitui todos os destinos definidos anteriormente. Ele usa o local de partida do motorista correspondente e as condições da via e do trânsito.

Navigator.setDestinations usa os seguintes parâmetros:

ParâmetroDescrição
destinos A nova lista de destino a ser definida.
customRoutesOptions As opções que serão usadas para recuperar uma rota pré-computada, com base em um token retornado pela API Routes Preferred.
displayOptions As opções que serão usadas para exibir a rota.

O método Navigator.setDestinations retorna o status da solicitação. Se for encontrado um trajeto do local do usuário até o destino especificado, ele vai retornar RouteStatus.OK.

Exemplo

O exemplo de código a seguir demonstra como recuperar uma rota personalizada.

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 RoutesPreferred 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);