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âmetro | Descriçã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);