GMSNavigator 類別參考資料

GMSNavigator 類別參考資料

總覽

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

這個類別不支援子類別。

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

公開成員函式

(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 設定和記錄至伺服器,在目前導覽工作階段期間套用至導覽事件。

房源

BOOLavoidsHighways
 產生前往目的地的路線時,是否要避開高速公路。
BOOLavoidsTolls
 規劃前往目的地的路線時,是否要避開收費路段。
BOOLavoidsFerries
 在產生前往目的地的路線時是否要避開渡輪。
GMSNavigationLicensePlateRestriction *licensePlateRestriction
 使用目前駕照的末碼和國家/地區代碼設定車牌限制。
BOOLguidanceActive
 即時路線導航目前是否已啟用。
BOOLstopGuidanceAtArrival
 是否在呼叫 -navigator:didArriveAtWaypoint: 時,是否應自動停止導航。
NSTimeIntervaltimeUpdateThreshold
 下一個目的地的預估時間變化下限,會觸發呼叫 navigator:didUpdateRemainingTime: 方法。
CLLocationDistancedistanceUpdateThreshold
 抵達下一個目的地 (觸發系統呼叫 navigator:didUpdateRemainingDistance: 方法) 的預估距離最低變化。
NSTimeIntervaltimeToNextDestination
 傳回前往下一個目的地的預估時間。
CLLocationDistancedistanceToNextDestination
 傳回前往下一個目的地的預估距離。
GMSNavigationDelayCategorydelayCategoryToNextDestination
 將誤點類別傳回至下一個目的地。
GMSRouteLeg *currentRouteLeg
 旅程目前的路段,
NSArray<GMSRouteLeg * >。routeLegs
 路線路段的陣列,其中每個航段都對應至設定的目的地。
GMSPath *traveledPath
 使用者最近一次的導航工作階段中經過的路徑,定義為上次 GuideActive 設為 YES。
GMSNavigationVoiceGuidancevoiceGuidance
 決定是否啟用路況和即時路線快訊的語音導引。
GMSVoiceGuidanceAudioDeviceTypeaudioDeviceType
 決定語音導引可播放的音訊裝置。
BOOLvibrationEnabled
 指定裝置是否在播放語音快訊時發出震動。
BOOLsendsBackgroundNotifications
 決定應用程式在背景執行時,是否會顯示含有指引資訊的 UILocalNotification。
GMSNavigationLightingModesuggestedLightingMode
 根據時段和裝置位置建議的光源模式。
BOOLshouldDisplayPrompts
 決定是否應顯示路況提示、更好路線和事故的提示。
GMSNavigationSpeedAlertOptions *speedAlertOptions
 GMSNavigationSpeedAlertOptions 用於自訂 GMSNavigationSpeedAlertSeverity 的觸發門檻。

(請注意,這些並非成員函式)。

typedef void(^GMSRouteStatusCallback )(GMSRouteStatus routeStatus)
 在系統發現從裝置位置到指定目的地的路線,或基於 RouteStatus 指示的理由找不到路線時呼叫。
typedef void(^GMSRouteInfoCallback )(GMSNavigationRouteInfo *_Nullable routeInfo)
 在計算到所提供路線控點的路線資訊 (預計到達時間與距離) 時呼叫。
typedef void(^GMSNavigationTransactionIDErrorHandler )(NSError *error)
 如果透過 setTransactionIDs 設定交易 ID 失敗,就會呼叫此方法。

成員職能說明文件

- (void) addListener: (id< GMSNavigatorListener >) 聆聽者

新增事件監聽器。

監聽事件監聽器的強度不足。

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

移除事件監聽器。

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

設定多個導覽目的地,覆寫任何先前設定的目的地。

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

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

- (void) setDestinations: (NSArray<GMSNavigationWaypoint * > *) 目的地
routingOptions: (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 *) 目的地
withRoutingOptions: (GMSNavigationRoutingOptions *) routingOptions
回呼: (GMSRouteInfoCallback) 回呼

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

這個方法僅適用於透過 Google 按單筆交易付費的 Mobility Services 客戶。如果專案沒有呼叫這個 API 的權限,系統會傳回「nil」值。

參數:
目的地目的地路線控點。
routingOptions用於擷取路線資訊的選項。路由策略和替代路徑策略會被略過,因為此方法會傳回所有轉送策略的路徑資訊。
回呼接收路徑資訊時呼叫的回呼。

已淘汰,

請改用新的目的地清單呼叫其中一個 -setDestinations:... 方法。

從目前的目的地清單中彈出第一個目的地。通話結束後,導航會送到下一個目的地 (如有)。

傳回:
路線控點指引目前正朝向前進;如果沒有離開路線控點,則傳回 nil。
注意:
這項功能已淘汰,請改用其中一個 -setDestinations:... 方法。

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

指引啟用後,這項功能會自動停止。

- (NSTimeInterval) timeToWaypoint: (GMSNavigationWaypoint *) 路線控點

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

這項資訊會在導航功能啟用時根據目前的裝置位置更新。

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

- (CLLocationDistance) distanceToWaypoint: (GMSNavigationWaypoint *) 路線控點

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

系統會在導航功能啟用時根據目前的裝置位置更新這項資訊。

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

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

將持續性交易 ID 設定和記錄至伺服器,在目前導覽工作階段期間套用至導覽事件。

系統會在導覽工作階段結束時清除交易 ID。這個方法僅適用於透過 Google 按單筆交易付費的 Mobility Services 客戶。如果專案沒有呼叫這個 API 的權限,系統會傳回「nil」值。

參數:
transactionIDs套用至目前導覽工作階段的交易 ID。每筆可計費交易的交易 ID 不得重複。個別交易 ID 必須包含至少一個,最多 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]

如果透過 setTransactionIDs 設定交易 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: 時,是否應自動停止導航。

如果設為 NO,在您抵達目的地後,導覽頁首和頁尾會繼續顯示。導覽標題會持續顯示最後一個指引步驟,導覽頁尾會持續更新剩餘的時間和距離,直到到達時間/距離達到 0 為止。此外,-navigator:didUpdateRemainingTime 和 -navigator:didUpdateRemainingDistance 更新會繼續。明確將 guidanceActive 設為 NO,即可停止導航及顯示剩餘時間/距離更新。

如果設為 是,guidanceActive 會在抵達時自動設為 NO。

預設值為 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 傳回,並簡化成線段。

注意:
系統會輪詢用戶端中的 GPS 訊號,藉此取得位置資料。GPS 訊號不佳可能會導致系統進一步進行內插,這麼做可能會產生較不精確的路線。如果指引從未開始,這個路徑會是空白的。
- (GMSNavigationVoiceGuidance) voiceGuidance [read, write, assign]

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

預設為 GMSNavigationVoiceGuidanceAlertsAndGuidance。

決定語音導引可播放的音訊裝置。

預設值為 GMSVoiceGuidanceAudioDeviceTypeBluetooth。

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

指定裝置是否在播放語音快訊時發出震動。

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

決定應用程式在背景執行時,是否會顯示含有指引資訊的 UILocalNotification。

預設值為 YES。

根據時段和裝置位置建議的光源模式。

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

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

預設值為 YES。

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

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

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