路线计算(包括重新规划路线)会返回导航所需时间最短的路线,作为 默认最佳路线。但您可以更改路线规划策略,以便返回路线替代方案中较短的路线。
“较短”一词是指在我们的默认费用模型中,在最佳路线中距离最短的路线。 较短的路线可能不是 绝对 最短的路线,因为该选项可能不是一个好的替代方案。例如,如果绝对最短的路线为 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 | 显示剩余距离。 |
示例
以下代码示例展示了如何配置路线标注格式。
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;