路线计算(包括重新路线规划)会将导航时间最短的路线作为默认最佳路线返回。不过,您可以更改路由策略,以便系统改为返回较短的路线选项。
更短是指根据默认费用模型,在所有最佳路线中距离最短的路线。较短的路线可能不是绝对最短的路线,因为该选项可能不是一个好的替代方案。例如,如果绝对最短路线为 10 公里,导航时间为 50 分钟,而另一条路线为 15 公里,但导航时间仅为 20 分钟,则第二种选择是最佳选择,因为花费 30 分钟缩短 5 公里的路程并不是一个好的折衷。
为行程设置路线策略后,除非行程结束,否则该策略不会发生变化。如需更改现有行程的路线策略,您必须清除目的地,然后使用新的路线策略重新设置目的地。
获取路线详情
如需确定哪种路线策略是给定航点的最佳选择,请调用 getRouteInfoForDestination()
以获取默认最佳路线和绝对更短路线的路线详细信息。详细信息包括时长和到达目的地航点的距离。
这些详细信息来自回调中的 GMSNavigationRouteInfo
。
示例
以下代码示例演示了如何获取这两种路由策略的路线详细信息。
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){...}];
设置路由策略
您可以使用 GMSNavigationRoutingOptions
配置路由策略,并在调用 setDestinations()
时设置 routingStrategy
。
routingStrategy
采用以下枚举值之一:
枚举值 | 说明 |
---|---|
GMSNavigationRoutingStrategyDefaultBest | 根据 Navigation SDK 默认费用模型对路线进行排名。这是默认的路由策略。 |
GMSNavigationRoutingStrategyShorter | 按距离对路线进行排名。排名最高的路线是返回的路线中最短的路线。 |
示例
以下代码示例演示了如何设置更短路线路由策略。
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){...}];
包含轮渡的路线
默认情况下,Navigation SDK for iOS 会排除包含渡轮的路线。如果您希望在路线中添加渡轮选项,可以将 avoidsFerries
设置为 false
,以调整此路线偏好设置,以便将行程显示为渡轮路段。
示例
Swift
self.mapView.navigator?.avoidsFerries = false
Objective-C
self.mapView.navigator.avoidsFerries = NO
路线宣传信息格式
在“距离较短”路线策略下,路线沿途的宣传信息会显示距离详情。不过,您可以改用预计到达时间宣传信息。
配置路线宣传信息格式
您可以通过在 GMSMapView
中设置 routeCalloutFormat
来更改路线宣传信息格式。routeCalloutFormat
采用以下枚举值之一:
枚举值 | 说明 |
---|---|
GMSNavigationRouteCalloutFormatDefault | 显示使用默认最佳路线路由策略时剩余的时间。显示使用更短路线路由策略时剩余的距离 |
GMSNavigationRouteCalloutFormatTime | 显示剩余时间。 |
GMSNavigationRouteCalloutFormatDistance | D 显示剩余距离。 |
示例
以下代码示例演示了如何配置路线宣传信息格式。
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;