路徑計算 (包括重新轉送) 會傳回需要最短導航時間做為預設最佳路徑的路徑。但您可以變更轉送策略,改為傳迴路徑替代值較短的版本。
「更短」一詞是指根據預設費用模型,此為最佳路線的最短路徑。較短的路徑可能不是「絕對」的最短路徑,因為該選項可能不是最佳替代方案。舉例來說,如果絕對最短路線是 10 公里,且需要 50 分鐘的導航路線,另一條路線是 15 公里,但只要 20 分鐘到達,則第二個選擇是最理想的選擇,因為花費 30 分鐘縮短五公里並不算是明智的取捨。
設定行程的轉送策略後,直到行程完成為止。如要變更現有行程的轉送策略,您必須清除目的地,然後使用新的路線策略再次重設。
取得路線詳細資訊
如要判斷哪個路徑策略是特定路線控點的最佳選擇,請呼叫 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){...}];
設有渡輪的路線
根據預設,適用於 iOS 的 Navigation SDK 會排除內含渡輪的路徑。如果您想在路線中加入渡輪選項,可以將 avoidsFerries
設為 false
,藉此調整此路線偏好設定,以便顯示前往渡輪區塊的行程。
範例
Swift
self.mapView.navigator?.avoidsFerries = false
Objective-C
self.mapView.navigator.avoidsFerries = NO
路徑摘要格式
在較短的路徑轉送策略下,沿途的摘要會顯示距離詳細資料。但你仍可改用延展型文字廣告摘要。
設定路徑摘要格式
您可以在 GMSMapView
中設定 routeCalloutFormat
,即可變更路徑摘要格式。routeCalloutFormat
會採用下列其中一個列舉值:
列舉值 | 說明 |
---|---|
GMSNavigationRouteCalloutFormatDefault | 顯示使用預設最佳路徑轉送策略的剩餘時間。使用較短的路線路線策略時,顯示剩餘距離 |
GMSNavigationRouteCalloutFormatTime | 顯示剩餘時間。 |
GMSNavigationRouteCalloutFormatDistance | DDisplays 剩餘距離。 |
範例
以下程式碼範例說明如何設定路徑摘要格式。
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;