Regola le preferenze di routing

I calcoli del percorso (compreso il cambio di percorso) restituiscono come percorso migliore predefinito il percorso che impiega il meno tempo a disposizione. Tuttavia, puoi modificare la strategia di routing in modo che venga restituita la alternativa più breve.

Il termine più breve indica il percorso più breve tra il percorso ottimale in base al nostro modello di costo predefinito. Forse quello più breve non è quello assoluto, dato che potrebbe non essere un'alternativa. Ad esempio, se il percorso più breve in assoluto è di 10 km e impiega 50 minuti per percorrere, mentre un altro percorso richiede solo 20 minuti, la seconda opzione è ottimale, perché dedicare 30 minuti per ridurre di 5 km non è un buon compromesso.

Una volta impostata, la strategia di routing per una corsa non cambierà fino al completamento della corsa. Per modificare la strategia di routing per una corsa esistente, devi cancellare le destinazioni e reimpostarle di nuovo con la nuova strategia di routing.

Recupero dei dettagli del percorso in corso...

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

Questi dettagli provengono da GMSNavigationRouteInfo nel callback.

Esempio

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

Impostare la strategia di routing

Puoi configurare la strategia di routing utilizzando GMSNavigationRoutingOptions e impostando routingStrategy durante le chiamate a 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. Questa è la strategia di routing predefinita.
GMSNavigationRoutingStrategyShorter Ordina i percorsi in base alla distanza. La route con il ranking più alto è la più breve tra quelle restituite.

Esempio

Il seguente esempio di codice mostra come impostare la strategia di routing di route 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 di navigazione per iOS esclude i percorsi che includono traghetti. Se preferisci includere le opzioni dei traghetti all'interno dei percorsi, puoi modificare questa preferenza in modo da esporre la corsa 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

Nella strategia di routing del percorso più breve, i callout lungo il percorso mostrano i dettagli sulla distanza. In alternativa, puoi utilizzare i callout ETA.

Configurazione del formato del callout del percorso

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

Valore di enumerazioneDescrizione
GMSNavigationRouteCalloutFormatDefault Mostra il tempo rimanente quando utilizzi la strategia di routing delle route migliore predefinita. Mostra la distanza rimanente quando utilizzi la strategia di routing del percorso più breve
GMSNavigationRouteCalloutFormatTime Mostra il tempo rimanente.
GMSNavigationRouteCalloutFormatDistance DMostra la distanza rimanente.

Esempio

Il seguente esempio di codice mostra come configurare il formato del callout del percorso.

Swift

self.mapView.routeCalloutFormat = .time

Objective-C

_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;