Adjust routing preferences

Route calculations (including rerouting) return the route that takes the least amount of time to navigate as the default best route . But you can change the routing strategy so that the shorter of the route alternatives is returned instead.

The term shorter means the route that is the shortest among optimal route based on our default cost model. The shorter route might not be the absolute shortest route, since that option might be a poor alternative. For example, if the absolute shortest route is 10 km and takes 50 minutes to navigate and another route is 15 km, but only takes 20 minutes to navigate, the second choice is optimal, because spending 30 mins to reduce five km isn't a good trade-off.

Once you set the routing strategy for a trip, it won't change until the trip completes. To change the routing strategy for an existing trip, you must clear the destinations and reset them again with the new routing strategy.

Getting route details

To determine which route strategy is the optimal choice for a given waypoint, call getRouteInfoForDestination() to get route details for both the default best route and the absolute shorter route. Details include the duration and the distance to a destination waypoint.

These details come from GMSNavigationRouteInfo in the callback.

Example

The following code example demonstrates how to get route details for each of the two routing strategies.

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 
 ){...}]; 
 

Setting the routing strategy

You can configure the routing strategy by using GMSNavigationRoutingOptions , and setting the routingStrategy when calling setDestinations() .

routingStrategy takes one of the following enumeration values:

Enumeration Value Description
GMSNavigationRoutingStrategyDefaultBest Ranks routes by the Navigation SDK default cost model. This is the default routing strategy.
GMSNavigationRoutingStrategyShorter Ranks routes by distance. The highest ranking route is the shortest of those returned.

Example

The following code example demonstrates how to set the shorter route routing strategy.

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 
 ){...}]; 
 

Routes that include ferries

By default, the Navigation SDK for iOS excludes routes that include ferries. If you prefer to include ferry options as part of your routes, you can adjust this routing preference to expose the trip to ferry segments by setting avoidsFerries to false .

Example

Swift

  self 
 . 
 mapView 
 . 
 navigator 
 ?. 
 avoidsFerries 
  
 = 
  
 false 
 

Objective-C

  self 
 . 
 mapView 
 . 
 navigator 
 . 
 avoidsFerries 
  
 = 
  
 NO 
 

The route callout format

Under the shorter route routing strategy, callouts along the route display distance details. But you can use the ETA callouts instead.

Configuring the route callout format

You can change the route callout format by setting routeCalloutFormat in GMSMapView . routeCalloutFormat takes one of the following enumeration values:

Enumeration Value Description
GMSNavigationRouteCalloutFormatDefault Displays time remaining when using the default best route routing strategy. Displays distance remaining when using the shorter route routing strategy
GMSNavigationRouteCalloutFormatTime Displays time remaining.
GMSNavigationRouteCalloutFormatDistance DDisplays distance remaining.

Example

The following code example demonstrates how to configure the route callout format.

Swift

  self 
 . 
 mapView 
 . 
 routeCalloutFormat 
  
 = 
  
 . 
 time 
 

Objective-C

  _mapView 
 . 
 routeCalloutFormat 
  
 = 
  
 GMSNavigationRouteCalloutFormatTime 
 ; 
 
Create a Mobile Website
View Site in Mobile | Classic
Share by: