Regola le preferenze di routing

I calcoli dei percorsi (incluso il cambio percorso) restituiscono il percorso che richiede il minor tempo di navigazione come percorso migliore predefinito. Tuttavia, puoi modificare la strategia di routing in modo che venga restituita l'alternativa di percorso più breve.

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 più breve in assoluto, poiché questa opzione potrebbe essere un'alternativa scadente. Ad esempio, se il percorso più breve in assoluto è di 10 km e richiede 50 minuti di navigazione e un altro percorso è di 15 km, ma richiede solo 20 minuti di navigazione, la seconda scelta è ottimale, perché impiegare 30 minuti per ridurre 5 km non è un buon compromesso.

Una volta impostata la strategia di routing per un percorso, questa non cambierà fino al completamento del percorso. Per modificare la strategia di routing per un percorso esistente, devi cancellare le destinazioni e reimpostarle con la nuova strategia di routing.

Recupero dei dettagli del percorso in corso…

Per determinare quale strategia di percorso è la scelta ottimale per un determinato waypoint, chiama getRouteInfoForDestination() per ottenere i dettagli del percorso sia per il percorso migliore predefinito sia per il percorso più breve in assoluto. I dettagli includono la durata e la distanza da un waypoint di destinazione.

Questi dettagli provengono da GMSNavigationRouteInfo nel callback.

Esempio

L'esempio di codice seguente mostra come ottenere i dettagli del percorso per ciascuna delle due strategie di routing.

Swift

let routingOptions = GMSNavigationRoutingOptions()
navigator?.getRouteInfoForDestination(destination,
                                      routingOptions: routingOptions) { routeInfo in
  ...
}

Objective-C

GMSNavigationRoutingOptions *routingOptions =
    [[GMSNavigationRoutingOptions alloc] init];
[navigator getRouteInfoForDestination:destination
                   withRoutingOptions:routingOptions
                             callback:^(GMSNavigationRouteInfo *routeInfo){...}];

Impostazione della strategia di routing

Puoi configurare la strategia di routing utilizzando GMSNavigationRoutingOptions e impostando routingStrategy quando chiami setDestinations().

routingStrategy assume uno dei seguenti valori di enumerazione:

Valore di enumerazioneDescrizione
GMSNavigationRoutingStrategyDefaultBest Classifica i percorsi in base al modello di costo predefinito dell'SDK Navigation. Questa è la strategia di routing predefinita.
GMSNavigationRoutingStrategyShorter Classifica i percorsi in base alla distanza. Il percorso con il ranking più alto è il più breve tra quelli restituiti.

Esempio

L'esempio di codice seguente mostra come impostare la strategia di routing del percorso più breve.

Swift

let routingOptions = GMSNavigationRoutingOptions(routingStrategy: .shorter)
navigator?.setDestinations(destinations,
                           routingOptions: routingOptions) { routeStatus in
  ...
}

Objective-C

GMSNavigationRoutingOptions *routingOptions = [[GMSNavigationRoutingOptions alloc] initWithRoutingStrategy:GMSNavigationRoutingStrategyShorter];
[navigator setDestinations:destinations
            routingOptions:routingOptions
                  callback:^(GMSRouteStatus routeStatus){...}];

Percorsi che includono traghetti

Per impostazione predefinita, l'SDK Navigation per iOS esclude i percorsi che includono traghetti. Se preferisci includere le opzioni di traghetto nei tuoi percorsi, puoi modificare questa preferenza di routing per esporre il percorso ai segmenti di traghetto impostando avoidsFerries su false.

Esempio

Swift

self.mapView.navigator?.avoidsFerries = false

Objective-C

self.mapView.navigator.avoidsFerries = NO

Il formato del callout del percorso

Con la strategia di routing del percorso più breve, i callout lungo il percorso mostrano i dettagli della distanza. Tuttavia, puoi utilizzare i callout ETA.

Configurazione del formato del callout della route

Puoi modificare il formato del callout del percorso impostando routeCalloutFormat in GMSMapView. routeCalloutFormat assume uno dei seguenti valori di enumerazione:

Valore di enumerazioneDescrizione
GMSNavigationRouteCalloutFormatDefault Visualizza il tempo rimanente quando utilizzi la strategia di routing predefinita per il percorso migliore. Mostra la distanza rimanente quando utilizzi la strategia di routing per il percorso più breve
GMSNavigationRouteCalloutFormatTime Mostra il tempo rimanente.
GMSNavigationRouteCalloutFormatDistance Mostra la distanza rimanente.

Esempio

L'esempio di codice seguente mostra come configurare il formato del callout della route.

Swift

self.mapView.routeCalloutFormat = .time

Objective-C

_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;