Regola le preferenze di routing

I calcoli del percorso (compresa la rielaborazione del percorso) restituiscono il percorso che prende le il tempo minimo necessario per percorrere le strade come percorso migliore predefinito. Ma puoi modificare la strategia di routing in modo che il percorso più breve vengono restituite le alternative.

Il termine più breve indica il percorso più breve tra quelli ottimali. in base al nostro modello di costo predefinito. Il percorso più breve potrebbe non essere l'assoluto percorso più breve, in quanto questa opzione potrebbe essere un'alternativa insoddisfacente. Ad esempio, se il percorso più breve in assoluto è di 10 km e impiega 50 minuti per navigare e un altro percorso è di 15 km, ma richiede solo 20 minuti per navigare, la seconda scelta è ottimale, perché spendere 30 minuti per ridurre di cinque km non è un buon compromesso.

Una volta impostata la strategia di percorso per una corsa, questa non cambierà fino alla corsa vengono completate. Per modificare la strategia di elaborazione del percorso per una corsa esistente, è necessario cancellare le destinazioni e reimpostarle di nuovo con la nuova strategia di routing.

Recupero dei dettagli del percorso

Per determinare quale strategia di percorso è la scelta ottimale per una determinata tappa, chiama getRouteInfoForDestination() per ottenere i dettagli del percorso sia per quello predefinito migliore e quello più breve in assoluto. I dettagli includono la durata e distanza fino a una tappa di destinazione.

Questi dettagli provengono da GMSNavigationRouteInfo nel callback.

Esempio

Il seguente esempio di codice mostra come ottenere i dettagli delle route per ciascuno dei 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){...}];

Impostare la strategia di routing

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

routingStrategy accetta uno dei seguenti valori di enumerazione:

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

Esempio

Il seguente esempio di codice mostra come impostare il routing della route più breve strategia.

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 di navigazione per iOS esclude i percorsi che includono traghetti. Se preferisci includi opzioni di traghetto come parte dei tuoi percorsi, puoi modificare questo percorso preferenza di esporre la corsa verso segmenti di traghetti 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 più breve, i callout lungo il percorso vengono visualizzati. dettagli sulla distanza. In alternativa, puoi utilizzare i callout Orario di arrivo stimato.

Configurare il formato dei callout di route

Puoi modificare il formato dei callout per il routing impostando routeCalloutFormat in GMSMapView. routeCalloutFormat richiede una delle seguenti enumerazioni valori:

Valore di enumerazioneDescrizione
GMSNavigationRouteCalloutFormatDefault Mostra il tempo rimanente quando si utilizza il percorso di percorso migliore predefinito strategia. Mostra la distanza rimanente quando si utilizza il percorso più breve. di strategia
GMSNavigationRouteCalloutFormatTime Visualizza il tempo rimanente.
GMSNavigationRouteCalloutFormatDistance DMostra la distanza rimanente.

Esempio

Il seguente esempio di codice mostra come configurare il callout della route formato.

Swift

self.mapView.routeCalloutFormat = .time

Objective-C

_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;