Token di percorso

Quando stabilisci il percorso migliore per un viaggio in ridesharing, il percorso più veloce potrebbe non essere sempre l'opzione migliore. Potresti voler personalizzare il percorso. L'API Routes Preferred ti consente di personalizzare una route specificando un obiettivo tramite il metodo ComputeCustomRoutes.

Quando crei una route personalizzata, l'API Routes Preferred genera un token di route. Puoi quindi passare il token all'SDK di navigazione per Android e recuperare la route personalizzata.

Per maggiori informazioni sulla creazione di una route personalizzata, consulta Creare route personalizzate.

Recupero di una route personalizzata

Puoi recuperare una route personalizzata trasmettendo un token di route a Navigator SDK per Android con il metodo Navigator.setDestinations.

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

La route personalizzata sostituisce qualsiasi destinazione impostata in precedenza. Utilizza la posizione di partenza del conducente e le condizioni della strada e del traffico.

Navigator.setDestinations accetta i seguenti parametri:

ParametroDescrizione
destinazioni Il nuovo elenco di destinazioni da impostare.
customRoutesOptions Le opzioni che verranno utilizzate per recuperare una route precalcolata, in base a un token restituito dall'API Routes Preferred.
displayOptions Le opzioni utilizzate per visualizzare il percorso.

Il metodo Navigator.setDestinations restituisce lo stato della richiesta. Se viene trovata una route dalla posizione dell'utente alla destinazione specificata, viene restituito RouteStatus.OK.

Esempio

Il seguente esempio di codice mostra come recuperare una route personalizzata.

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