路線計算作業 (包括重新導航) 會傳回最短的導航時間,並將其設為預設最佳路線。不過,您可以變更轉送策略,改為回傳較短的路徑替代方案。
「較短」一詞是指根據預設成本模型,在最佳路線中找出最短的路線。較短的路線可能不是絕對最短的路線,因為這個選項可能不是理想的替代方案。舉例來說,如果最短路線長度為 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;