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:
 根据路线策略返回路线信息:默认的最佳路线或较短的路线。
(可为 null 的 GMSNavigationWaypoint *)- continueToNextDestination
 已弃用。
(void) - clearDestinations
 清除之前设置的所有目的地并从地图中移除所有计算出的路线。
(NSTimeInterval)- timeToWaypoint
 返回指定航点的预计时间,如果航点不属于当前路线,则返回 CLTimeIntervalMax。
(CLLocationDistance)- distanceToWaypoint
 返回指定航点的估计距离,如果航点不是当前路线的一部分,则返回 CLLocationDistanceMax。
(void) - setTransactionIDs:errorHandler:
 设置将应用于当前导航会话期间导航事件的正在进行的事务 ID,并将其记录到服务器。

属性

BOOL avoidsHighways
 生成前往目的地的路线时,是否避开高速公路。
BOOL avoidsTolls
 生成前往目的地的路线时,是否避开收费路段。
BOOL avoidsFerries
 在生成前往目的地的路线时,是否避开轮渡。
GMSNavigationLicensePlateRestrictionlicensePlateRestriction
 使用当前驾驶员的最后一位数和国家/地区代码来设置车牌限制。
BOOL guidanceActive
 目前是否启用了精细导航。
BOOL stopGuidanceAtArrival
 当调用 -navigator:didArriveAtWaypoint: 时,指示是否应自动停止。
NSTimeInterval timeUpdateThreshold
 触发调用 navigator:didUpdateRemainingTime: 方法的下一个目的地预计时间的最短变化。
CLLocationDistancedistanceUpdateThreshold
 会触发调用 navigator:didUpdateRemainingDistance: 方法的与下一个目的地的估算距离的最小变化。
NSTimeInterval timeToNextDestination
 返回到达下一个目的地的预计时间。
CLLocationDistancedistanceToNextDestination
 返回到下一个目的地的估算距离。
GMSNavigationDelayCategorydelayCategoryToNextDestination
 将延迟类别返回到下一个目的地。
GMSRouteLegcurrentRouteLeg
 行程的当前路程。
NSArray< GMSRouteLeg * > * routeLegs
 路线路程数组,其中每段路程都对应一个设置的目的地。
GMSPathtraveledPath
 自上次 GuideActive 设置为“是”以来设备经过的路径。
GMSNavigationVoiceGuidancevoiceGuidance
 确定是否应为路况和精细导航提醒启用语音导航。
GMSVoiceGuidanceAudioDeviceTypeaudioDeviceType
 确定播放语音导航的音频设备。
BOOL vibrationEnabled
 确定播放语音提醒时设备是否也应振动。
BOOL sendsBackgroundNotifications
 确定当应用在后台运行时,是否显示包含指导信息的 UILocalNotifications。
GMSNavigationLightingModesuggestedLightingMode
 根据时段和设备位置推荐的光照模式。
BOOL shouldDisplayPrompts
 确定是否应显示有关路况、更好的路线和突发事件的提示。
GMSNavigationSpeedAlertOptionsspeedAlertOptions
 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 * > *) 平台
路由选项: (GMSNavigationRoutingOptions *) routingOptions
回调: (GMSRouteStatusCallback) 回调

设置多个导航目的地,覆盖之前设置的所有目的地。

返回的路由使用路由选项计算。

参数:
目标网页目的地航点数组。
routingOptions影响路由逻辑(路由策略)的选项。
callback当找到从使用方位置到所提供目的地的路线时调用,或因 RouteStatus 指示的原因未找到路线时调用。
- (void) setDestinations: (NSArray< GMSNavigationWaypoint * > *) 平台
pathToken: (NSString *)  routeToken
回调: (GMSRouteStatusCallback) 回调

设置多个导航目的地,使用路线令牌在预计算的路线上进行导航。

路线会保持不变,并以模数形式更改驾驶员出发位置和道路/路况。系统仍会根据令牌中编码的转送选项来重新指定路线。

使用路由令牌启动导航会话时,仅支持 GMSNavigationTravelModeDrivingGMSNavigationTravelModeTwoWheeler。通过设置 travelMode 来配置出行方式。如果当前出行方式不受支持,调用将失败,并且回调中会返回 GMSRouteStatusTravelModeUnsupported

参数:
目标网页目的地航点数组,应与为获取路线令牌而提供给 RoutesPreferred API 的目的地相同。
routeTokenRoutesPreferred API 返回的路线令牌字符串。RoutesPreferred API 中指定的路线选项会编码在此路线令牌中,且用于在重新路线发生时重新生成预计算路线或新路线。
callback当找到从使用方位置到所提供目的地的路线时调用,或因 RouteStatus 指示的原因未找到路线时调用。
- (void) getRouteInfoForDestination: (GMSNavigationWaypoint *) 目标位置
withRoutingOptions: (GMSNavigationRoutingOptions *) routingOptions
回调: (GMSRouteInfoCallback) 回调

根据路线策略返回路线信息:默认的最佳路线或较短的路线。

如果项目缺少调用此 API 的权限,则返回 nil 值。

参数:
目标账号目的地航点。
routingOptions用于获取路线信息的选项。由于该方法会返回所有路线策略的路线信息,因此系统会忽略路线策略和备选路线策略。
callback收到路线信息时调用的回调。

已弃用。

使用新的目的地列表调用某个 -setDestinations:... 方法,而不是调用此方法。

弹出当前目的地列表中的第一个目的地。本次通话结束后,系统将引导前往下一个目的地(如果有)。

返回
航点指导现在将朝向,如果没有任何航点,则为 nil。
注意:
此 API 已废弃。请改用其中一个 -setDestinations:... 方法

清除之前设置的所有目的地并从地图中移除所有计算出的路线。

如果导览处于活跃状态,系统会自动停止导航。

- (NSTimeInterval)timeToWaypoint (GMSNavigationWaypoint *) 航点

返回指定航点的预计时间,如果航点不属于当前路线,则返回 CLTimeIntervalMax。

当导航处于活跃状态时,系统会根据当前的设备位置进行更新。

如果提供的航点不是当前路线中的目的地,则返回 CLTimeIntervalMax。

- (CLLocationDistance) distanceToWaypoint (GMSNavigationWaypoint *) 航点

返回指定航点的估计距离,如果航点不是当前路线的一部分,则返回 CLLocationDistanceMax。

当导航处于活跃状态时,系统会根据当前的设备位置进行更新。

如果提供的航点不是当前路线中的目的地,则返回 CLLocationDistanceMax。

- (void) setTransactionIDs: (NSArray< NSString * > *) transactionIDs
errorHandler: (可为 null 的 GMSNavigationTransactionIDErrorHandler errorHandler

设置将应用于当前导航会话期间导航事件的正在进行的事务 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]

在通过 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: 时,指示是否应自动停止。

如果选择“否”,导航页眉和页脚在到达后会继续显示。导航标题将继续显示最终的指导步骤,导航页脚将继续更新剩余时间和距离,直到时间/距离为 0。此外,-navigator:didUpdateRemainingTime 和 -navigator:didUpdateRemainingDistance 也将继续更新。明确将 guidanceActive 设置为 NO,以停止指导和剩余时间/距离更新。

如果选择“是”,系统会在您抵达时将guidanceActive自动设为“否”。

默认值为 YES。

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

触发调用 navigator:didUpdateRemainingTime: 方法的下一个目的地预计时间的最短变化。

如果将其设置为 NSTimeIntervalMax,则时间更新回调将被停用。如果设为负值,将使用默认阈值(一秒)。默认值为 1 秒。

注意:
如果没有实现 navigator:didUpdateRemainingTime: 的监听器,系统会忽略此值。
- (CLLocationDistance) distanceUpdateThreshold [read, write, assign]

会触发调用 navigator:didUpdateRemainingDistance: 方法的与下一个目的地的估算距离的最小变化。

如果将其设置为 CLLocationDistanceMax,则距离更新回调将被停用。如果设为负值,将使用一米的默认阈值。默认为一米。

注意:
如果没有实现 navigator:didUpdateRemainingDistance: 的监听器,系统会忽略此值。
- (NSTimeInterval) timeToNextDestination [read, assign]

返回到达下一个目的地的预计时间。

当导航处于活跃状态时,系统会根据当前的设备位置进行更新。

如果没有可用的路线,则返回 CLTimeIntervalMax。

- (CLLocationDistance) distanceToNextDestination [read, assign]

返回到下一个目的地的估算距离。

当导航处于活跃状态时,系统会根据当前的设备位置进行更新。

如果没有可用的路线,则返回 CLLocationDistanceMax。

- (GMSNavigationDelayCategory) delayCategoryToNextDestination [read, assign]

将延迟类别返回到下一个目的地。

当导航处于活跃状态时,系统会根据当前的设备位置进行更新。

如果没有可用的路线或路况数据不可用,则返回 GMSNavigationDelayCategoryNoData。

- (GMSRouteLeg*) currentRouteLeg [read, assign]

行程的当前路程。

GMSRouteLeg将其起始位置设为设备的最新已知(道路贴靠)位置。

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

路线路程数组,其中每段路程都对应一个设置的目的地。

- (GMSPath*) traveledPath [read, assign]

自上次 GuideActive 设置为“是”以来设备经过的路径。

如果指南尚未开始,此路径为空。路径包含 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,您将不会收到任何超速 Feed 数据,并且会显示 NavSDK 的默认速度提醒:当速度超过 5 英里/小时或 10 公里/小时时,速度提醒会显示红色文本;当速度超过 10 英里/小时或 20 公里/小时时,会显示白色文本和红色背景。