I calcoli dei percorsi (incluso il cambio di percorso) restituiscono il percorso che richiede meno tempo come percorso migliore predefinito. Tuttavia, puoi modificare la strategia di routing in modo che venga restituita la più breve delle alternative di percorso.
Il termine più breve indica il percorso più breve tra i percorsi ottimali in base al nostro modello di costo predefinito. Il percorso più breve potrebbe non essere il percorso assoluto più breve, poiché questa opzione potrebbe non essere una buona alternativa. Ad esempio, se il percorso più breve assoluto è di 10 km e richiede 50 minuti di guida e un altro percorso è di 15 km, ma richiede solo 20 minuti di guida, la seconda scelta è ottimale, perché spendere 30 minuti per risparmiare 5 km non è un buon compromesso.
Una volta impostata la strategia di routing per un viaggio, non cambierà fino al completamento del viaggio. Per modificare la strategia di calcolo del percorso per un viaggio esistente, devi cancellare le destinazioni e reimpostarle con la nuova strategia di calcolo del percorso.
Visualizzare i dettagli della route
Per determinare quale strategia di percorso è la scelta ottimale per un determinato waypoint, chiama getRouteInfo()
per visualizzare i dettagli del percorso migliore predefinito e del percorso più breve assoluto. I dettagli includono la durata
e la distanza da un waypoint di destinazione.
Questi dettagli provengono da RouteInfo
e vengono restituiti in un
ListenableResultFuture
.
Esempio
Il seguente esempio di codice mostra come ottenere i dettagli del percorso per ciascuna delle due strategie di routing.
ListenableResultFuture<RouteInfo> routeInfoFuture =
navigator.getRouteInfo(waypoint, routingOptions);
Impostazione della strategia di routing
Puoi configurare la strategia di routing impostando
RoutingOptions.routingStrategy
quando chiami setDestinations()
.
RoutingOptions.routingStrategy
accetta uno dei seguenti valori di enumerazione:
Valore di enumerazione | Descrizione |
---|---|
RoutingStrategy.DEFAULT_BEST | Classifica i percorsi in base al modello di costo predefinito dell'SDK Navigation. Questa è la strategia di routing predefinita. |
RoutingStrategy.SHORTER | Classifica i percorsi in base alla distanza. Il percorso con il ranking più alto è il più breve tra quelli restituiti. |
Esempio
Il seguente esempio di codice mostra come impostare la preferenza per il percorso più breve.
RoutingOptions routingOptions = new RoutingOptions();
routingOptions.routingStrategy(RoutingStrategy.SHORTER);
navigator.setDestinations(destinations, routingOptions, displayOptions);
Percorsi che includono traghetti
Per impostazione predefinita, NavSDK esclude i percorsi che includono traghetti. Se preferisci includere le opzioni dei traghetti nei tuoi percorsi, puoi modificare questa preferenza di routing in modo da mostrare i segmenti del viaggio con traghetti impostando avoidFerries
su false
.
Esempio
RoutingOptions routingOptions = new RoutingOptions().avoidFerries(true);
// Add additional routing preferences
navigator.setDestination(destination, routingOptions);
Il formato della callout del percorso
Se scegli la preferenza per il percorso più breve, i callout lungo il percorso mostrano dettagli sulla distanza. In alternativa, puoi utilizzare i callout ETA.
Configurare il formato del callout della rotta
Puoi modificare il formato del callout della strada chiamando setRouteCalloutInfoFormat
in NavigationView
(o in NavigationFragment
). setRouteCalloutInfoFormat
accetta uno dei seguenti valori di enumerazione:
Valore di enumerazione | Descrizione |
---|---|
RouteCalloutInfoFormat.DEFAULT | Mostra il tempo rimanente quando si utilizza la strategia di routing per il percorso migliore predefinita. Mostra la distanza rimanente quando si utilizza la strategia di routing per il percorso più breve. |
RouteCalloutInfoFormat.TIME | Mostra il tempo rimanente. |
RouteCalloutInfoFormat.DISTANCE | Mostra la distanza rimanente. |
Esempio
Il seguente esempio di codice mostra come configurare il formato del callout della route.
mNavFragment.setRouteCalloutInfoFormat(RouteCalloutInfoFormat.TIME);