GMSNavigator 類別參考資料

GMSNavigator 類別參考

總覽

這是 iOS 版 Google Navigation SDK 的主要類別,可提供方法控制目的地的導航,以及存取路線和進度資訊。

此類別不支援子類別。

這個類別不安全,所有方法都必須從主執行緒呼叫。

公開成員函式

(void) - addListener:
 新增事件監聽器。
(BOOL) - removeListener:
 移除事件監聽器。
(void) - setDestinations:callback:
 設定多個目的地以進行導覽,並覆寫先前設定的目的地。
(void) - setDestinations:routingOptions:callback:
 設定多個目的地以進行導覽,並覆寫先前設定的目的地。
(void) - setDestinations:routeToken:callback:
 設定多個目的地以進行導覽,使用路徑符記導覽至預先計算的路徑。
(void) - getRouteInfoForDestination:withRoutingOptions:callback:
 根據路線策略傳迴路線資訊:預設最佳或較短的路線。
(可為空值GMSNavigationWaypoint *)- continueToNextDestination
 已淘汰,
(void) - clearDestinations
 清除先前設定的所有目的地,並從地圖中移除所有計算的路線。
(NSTimeInterval)- timeToWaypoint:
 傳回到達指定路線控點的預計時間;如果路線控點不屬於目前路線,則傳回 CLTimeIntervalMax。
(CLLocationDistance)- distanceToWaypoint:
 傳回到指定路線控點的預估距離;如果路線控點不屬於目前路線,則傳回 CLLocationDistanceMax。
(void) - setTransactionIDs:errorHandler:
 將持續進行的交易 ID 設定和記錄到伺服器,此 ID 會套用到目前導航工作階段期間的導覽事件。

資源

BOOLavoidsHighways
 在產生前往目的地的路線時,是否要避開高速公路。
BOOLavoidsTolls
 在產生前往目的地的路線時,是否要避開收費路段。
BOOLavoidsFerries
 在產生前往目的地的路線時,是否要避免搭乘渡輪。
GMSNavigationLicensePlateRestrictionlicensePlateRestriction
 根據目前駕照的最後位數和國家/地區代碼設定車牌限制。
BOOLguidanceActive
 目前是否啟用即時路線導航。
BOOLstopGuidanceAtArrival
 是否要在呼叫 -navigator:didArriveAtWaypoint: 時,自動停止導航。
NSTimeIntervaltimeUpdateThreshold
 預計到下一個目的地會觸發呼叫 navigator:didUpdateRemainingTime: 方法的預估時間下限。
CLLocationDistancedistanceUpdateThreshold
 到下一個目的地的預估距離下限 (會觸發呼叫 navigator:didUpdateRemainingDistance: 方法)。
NSTimeIntervaltimeToNextDestination
 傳回前往下一個目的地的預估時間。
CLLocationDistancedistanceToNextDestination
 傳回前往下一個目的地的預估距離。
GMSNavigationDelayCategorydelayCategoryToNextDestination
 將誤點類別傳回下一個目的地。
GMSRouteLegcurrentRouteLeg
 歷程的目前路段。
NSArray< GMSRouteLeg * > * routeLegs
 路線路段陣列,其中每個航段都對應至已設定的目的地。
GMSPathtraveledPath
 裝置自上次 GuideActive 設為 YES 後所走的路徑。
GMSNavigationVoiceGuidancevoiceGuidance
 決定是否要針對路況和即時路線快訊啟用語音導引。
GMSVoiceGuidanceAudioDeviceTypeaudioDeviceType
 決定要透過哪些音訊裝置播放語音導引。
BOOLvibrationEnabled
 決定裝置是否在播放語音警示時也應震動。
BOOLsendsBackgroundNotifications
 決定當應用程式在背景執行時,是否要顯示包含指引資訊的 UILocalNotifications。
GMSNavigationLightingModesuggestedLightingMode
 根據時段和裝置位置,建議的亮度模式。
BOOLshouldDisplayPrompts
 決定是否應顯示車流量提示、更好的路線和事故。
GMSNavigationSpeedAlertOptionsspeedAlertOptions
 GMSNavigationSpeedAlertOptions 用於自訂 GMSNavigationSpeedAlertSeverity 的觸發門檻。

(請注意,這些不是成員函式)。

typedef void(^)GMSRouteStatusCallback )(GMSRouteStatus routeStatus)
 找到從裝置位置到指定目的地的路線時呼叫,或因 RouteStatus 指出原因找不到路線時呼叫。
typedef void(^)GMSRouteInfoCallback )(GMSNavigationRouteInfo *_Nullable routeInfo)
 在計算提供路線控點的路線資訊 (預計到達時間和距離) 時呼叫此方法。
typedef void(^)GMSNavigationTransactionIDErrorHandler )(NSError *錯誤)
 如果透過 setTransactionID 設定交易 ID 失敗,就會呼叫此方法。

成員函式說明文件

- (void) addListener: (ID< GMSNavigatorListener >) 監聽器

新增事件監聽器。

事件監聽器保留的參照項目不足。

參數:
事件監聽器符合 GMSNavigatorListener 通訊協定的物件。
- (BOOL) removeListener: (ID< GMSNavigatorListener >) 監聽器

移除事件監聽器。

參數:
事件監聽器符合 GMSNavigatorListener 通訊協定的物件。
傳回:
如果已移除事件監聽器,則傳回 YES。如果物件不是事件監聽器,則傳回 NO。
- (void) setDestinations: (NSArray< GMSNavigationWaypoint * > *) 目的地
回呼: (GMSRouteStatusCallback) 回呼

設定多個目的地以進行導覽,並覆寫先前設定的目的地。

如果系統從裝置位置找到到指定目的地的路線,便會使用 GMSRouteStatusOK 來呼叫提供的回呼。如果新的目的地在找到路線之前就設定了,則要求將會取消,而回呼將會使用 GMSRouteStatusCanceled 來呼叫。如果基於任何其他原因,找不到路線,系統會呼叫回呼並提供適當的錯誤狀態。

回呼一律會在主佇列上以非同步方式分派。

- (void) setDestinations: (NSArray< GMSNavigationWaypoint * > *) 目的地
routeOptions: (GMSNavigationRoutingOptions *) routingOptions
回呼: (GMSRouteStatusCallback) 回呼

設定多個目的地以進行導覽,並覆寫先前設定的目的地。

傳回的路徑是使用轉送選項計算而得。

參數:
目的地目的地路線控點的陣列。
routingOptions影響轉送邏輯 (轉送策略) 的選項。
回呼當系統找到從用戶端位置到指定目的地的路線時,或因 RouteStatus 指出的原因找不到路線,會呼叫此方法。
- (void) setDestinations: (NSArray< GMSNavigationWaypoint * > *) 目的地
routeToken: (NSString *) routeToken
回呼: (GMSRouteStatusCallback) 回呼

設定多個目的地以進行導覽,使用路徑符記導覽至預先計算的路徑。

路線將維持不變,駕駛人起點位置和道路/路況資訊都會隨之改變。系統仍會根據符記中編碼的轉送選項,重新轉送路徑。

使用路徑權杖啟動導航工作階段時,系統僅支援 GMSNavigationTravelModeDrivingGMSNavigationTravelModeTwoWheeler。設定 travelMode 來設定交通方式。如果不支援目前的交通方式,呼叫就會失敗,且回呼中會傳回 GMSRouteStatusTravelModeUnsupported

參數:
目的地目的地路線控點的陣列應與提供給 RoutesPreferred API 的目的地相同,才能取得路線符記。
routeTokenRoutesPreferred API 傳回的路徑權杖字串。在 RoutesPreferred API 中指定的轉送選項會以這個路徑符記編碼,並在重新規劃路線時用於重新產生預先計算的路徑或新路徑。
回呼當系統找到從用戶端位置到指定目的地的路線時,或因 RouteStatus 指出的理由找不到路線,會呼叫此方法。
- (void) getRouteInfoForDestination: (GMSNavigationWaypoint *) destination
使用 RouteOptions: (GMSNavigationRoutingOptions *) routingOptions
回呼: (GMSRouteInfoCallback) 回呼

根據路線策略傳迴路線資訊:預設最佳或較短的路線。

如果專案沒有呼叫此 API 的權限,則傳回 nil 值。

參數:
目的地目的地路線控點。
routingOptions用於擷取路線資訊的選項。系統會忽略路線策略和替代路線策略,因為這個方法會傳回所有路線策略的路線資訊。
回呼接收路徑資訊時呼叫的回呼。

已淘汰,

使用新的目的地清單呼叫其中一個 -setDestinations:... 方法,而不要呼叫此方法。

從目前的目的地清單中彈出第一個目的地。這次通話結束後,指引會導向下一個目的地。

傳回:
路線控點指南現在正朝向前進;如果沒有其他路線控點,則設為 nil。
注意:
已淘汰。請改用 -setDestinations:... 方法。

清除先前設定的所有目的地,並從地圖中移除所有計算的路線。

如果導引處於啟用狀態,這項功能會自動停止。

- (NSTimeInterval) timeToWaypoint: (GMSNavigationWaypoint *) waypoint

傳回到達指定路線控點的預計時間;如果路線控點不屬於目前路線,則傳回 CLTimeIntervalMax。

在導航功能啟用時,系統會根據裝置目前的位置進行更新。

如果提供的路線控點不是目前路線中的目的地,則傳回 CLTimeIntervalMax。

- (CLLocationDistance) distanceToWaypoint: (GMSNavigationWaypoint *) waypoint

傳回到指定路線控點的預估距離;如果路線控點不屬於目前路線,則傳回 CLLocationDistanceMax。

在導航功能啟用時,系統會根據目前的裝置位置進行更新。

如果提供的路線控點不是目前路線中的目的地,則傳回 CLLocationDistanceMax。

- (void) setTransactionID: (NSArray< NSString * > *) transactionIDs
errorHandler: (可為空值 GMSNavigationTransactionIDErrorHandler) errorHandler

將持續進行的交易 ID 設定和記錄到伺服器,此 ID 會套用到目前導航工作階段期間的導覽事件。

導覽工作階段結束時,交易 ID 將遭到清除。

參數:
transactionIDs套用至目前導覽工作階段的交易 ID。每筆可計費交易的交易 ID 不得重複。個別交易 ID 必須包含至少 1 至 64 個字元。交易結束時 (但工作階段仍在進行),這份清單可以列出空白的。
errorHandler如果交易 ID 無效時發生錯誤,系統會在主執行緒上以非同步方式叫用區塊。

- (typedef void(^ GMSRouteStatusCallback)(GMSRouteStatus routeStatus)) [related]

找到從裝置位置到指定目的地的路線時呼叫,或因 RouteStatus 指出原因找不到路線時呼叫。

- (typedef void(^ GMSRouteInfoCallback)(GMSNavigationRouteInfo *_Nullable routeInfo) [related]

在計算提供路線控點的路線資訊 (預計到達時間和距離) 時呼叫此方法。

參數:
routeInfo到達指定目的地的路線資訊。如果計算失敗,則值為 nil。
- (typedef void(^ GMSNavigationTransactionIDErrorHandler)(NSError *error) [related]

如果透過 setTransactionID 設定交易 ID 失敗,就會呼叫此方法。

詳情請參閱 API 的說明文件。


資源說明文件

- (BOOL) avoidsHighways [read, write, assign]

在產生前往目的地的路線時,是否要避開高速公路。

預設值為 NO。

- (BOOL) avoidsTolls [read, write, assign]

在產生前往目的地的路線時,是否要避開收費路段。

預設值為 NO。

- (BOOL) avoidsFerries [read, write, assign]

在產生前往目的地的路線時,是否要避免搭乘渡輪。

預設為 YES。

根據目前駕照的最後位數和國家/地區代碼設定車牌限制。

這可讓我們根據車牌號碼,繞行特定類型的道路限制。這僅適用於設定這個值之後發出的 setDestinations 呼叫。最好在取得導航器後立即設定此值。

如果沒有車牌限制,請設為「nil」。預設為 nil。

- (BOOL) guidanceActive [read, write, assign]

目前是否啟用即時路線導航。

如果 GuideActive 為 YES,但目前沒有可用路線,則導航會在有路線可用時啟動。如果呼叫 clearDestinations 或到達路線控點,這個屬性會設為 NO。

- (BOOL) stopGuidanceAtArrival [read, write, assign]

是否要在呼叫 -navigator:didArriveAtWaypoint: 時,自動停止導航。

如果設為「否」,抵達後會繼續顯示導覽標頭和頁尾。導覽標題將繼續顯示最後一個引導步驟,導覽頁尾會繼續更新剩餘時間和距離,直到到達 0 的時間/距離為止。此外,-navigator:didUpdateRemainingTime 和 -navigator:didUpdateRemainingDistance 會繼續更新。將 guidanceActive 明確設為 NO,以停止導航和剩餘的時間/距離更新。

如果設為「是」,guidanceActive 抵達後會自動設為「否」。

預設為 YES。

- (NSTimeInterval) timeUpdateThreshold [read, write, assign]

預計到下一個目的地會觸發呼叫 navigator:didUpdateRemainingTime: 方法的預估時間下限。

如果設為 NSTimeIntervalMax,系統會停用時間更新回呼。如果設為負值,系統將採用 1 秒的預設門檻值。預設值為 1 秒鐘。

注意:
如果沒有事件監聽器實作 navigator:didUpdateRemainingTime:,系統就會忽略這個值。
- (CLLocationDistance) distanceUpdateThreshold [read, write, assign]

到下一個目的地的預估距離下限 (會觸發呼叫 navigator:didUpdateRemainingDistance: 方法)。

如果設為 CLLocationDistanceMax,系統就會停用距離更新回呼。如果設為負值,系統將使用預設閾值 (1 公尺)。預設值為一公尺。

注意:
如果沒有事件監聽器實作 navigator:didUpdateRemainingDistance:,系統就會忽略這個值。
- (NSTimeInterval) timeToNextDestination [read, assign]

傳回前往下一個目的地的預估時間。

在導航功能啟用時,系統會根據目前的裝置位置進行更新。

如果沒有路線,則傳回 CLTimeIntervalMax。

- (CLLocationDistance) distanceToNextDestination [read, assign]

傳回前往下一個目的地的預估距離。

在導航功能啟用時,系統會根據目前的裝置位置進行更新。

如果沒有路線,則傳回 CLLocationDistanceMax。

- (GMSNavigationDelayCategory) delayCategoryToNextDestination [read, assign]

將誤點類別傳回下一個目的地。

在導航功能啟用時,系統會根據目前的裝置位置進行更新。

如果沒有路線或路況資料,則傳回 GMSNavigationDelayCategoryNoData。

- (GMSRouteLeg*) currentRouteLeg [read, assign]

歷程的目前路段。

GMSRouteLeg 的起點位置會是裝置最新的已知 (路面貼) 位置。

- (NSArray<GMSRouteLeg *>*) routeLegs [read, assign]

路線路段陣列,其中每個航段都對應至已設定的目的地。

- (GMSPath*) traveledPath [read, assign]

裝置自上次 GuideActive 設為 YES 後所走的路徑。

如果指引從未開始,這個路徑會是空白的。路徑包含 GMSRoadSnappedLocationProvider 傳回的路邊位置,但簡化了多餘點。例如將連續的線性點轉換為單一線段。

- (GMSNavigationVoiceGuidance) voiceGuidance [read, write, assign]

決定是否要針對路況和即時路線快訊啟用語音導引。

預設為 GMSNavigationVoiceGuidanceAlertsAndGuidance。

決定要透過哪些音訊裝置播放語音導引。

預設為 GMSVoiceGuidanceAudioDeviceTypeBluetooth。

- (BOOL) vibrationEnabled [read, write, assign]

決定裝置是否在播放語音警示時也應震動。

- (BOOL) sendsBackgroundNotifications [read, write, assign]

決定當應用程式在背景執行時,是否要顯示包含指引資訊的 UILocalNotifications。

預設為 YES。

根據時段和裝置位置,建議的亮度模式。

- (BOOL) shouldDisplayPrompts [read, write, assign]

決定是否應顯示車流量提示、更好的路線和事故。

預設為 YES。

GMSNavigationSpeedAlertOptions 用於自訂 GMSNavigationSpeedAlertSeverity 的觸發門檻。

您可以使用這項資源,自訂次要和重大快訊的速度快訊觸發門檻 (百分比)。您也可以使用這個方法,針對重大速度快訊自訂觸發時間門檻。

設定 nil 就不會收到任何速度的動態饋給資料,且 NavSDK 的預設速度警示將顯示:當速度超過速限超過 5 mph 或 10 kph 時,速度快訊會顯示紅色文字;如果速度超過 10 英里或 20 公里,則顯示白色文字和紅色背景。