Token di percorso

Nel determinare il percorso migliore per un viaggio di ridesharing, il percorso più veloce potrebbe non essere sempre l'opzione migliore. Puoi decidere di personalizzare il percorso. L'API Routes Preferred ti consente di personalizzare una route specificando un obiettivo di route con il metodo ComputeCustomRoutes.

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

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

Recupero di una route personalizzata

Puoi recuperare una route personalizzata passando un token di route all'SDK di navigazione per Android utilizzando 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 del traffico e della strada corrispondenti.

Navigator.setDestinations richiede 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 che verranno utilizzate per visualizzare il percorso.

Il metodo Navigator.setDestinations restituisce lo stato della richiesta. Se viene trovato un percorso dalla località dell'utente alla destinazione specificata, restituisce 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);