常见问题解答
产品信息
- Navigation SDK 条款应如何 是否显示服务通知?
- 语音导航支持哪些语言?
- 驾驶员在驾驶时是否维护方位 退出导航模式?
- 开始后是否可以使用多段线 还是更改路线?
- 应用用户是否需要安装 Google 地图 是否安装了移动设备?
- Navigation SDK 中的 识别餐厅和其他目的地附近的停车位?
- Navigation SDK 是否 临近转弯点时,能否在车道中显示行驶方向?
- 哪个 Navigation SDK 只有移动服务客户才能使用 API?
问题
网络
数据
- 我能否检索 在行程中的经停点/目的地是什么?
- 提供精细路线导航 ?
- 预计到达时间如何 (预计推出时间)是否传达给应用用户?
- 能否
RoadSnappedLocationProvider
获取驾驶员的 当前所贴的位置(如果导航不在前台运行)? - Navigation SDK 是否 是否支持地理围栏?
- 我可以在以下情况下停用通知: Navigation 应用在后台运行?
界面自定义
路由
模拟器
Workflows
- <ph type="x-smartling-placeholder"></ph> 如何在关闭包含 导航 fragment?(仅限 Android) 。
产品信息
- 您的应用必须实现一个包含 Navigation SDK 条款的对话框 每个驾驶员必须接受的服务声明。此对话框可让驾驶员 同意服务条款的机会。条款的文本文件 随 Navigation SDK 提供。
- 在 Android 中,使用
NavigationApi.showTermsAndConditionsDialog
方法显示包含条款的对话框。 。
- 在 iOS 中,调用
GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName
。 - 谷歌手机地图支持的任何语言都会自动 适用于 Navigation SDK。 设备设置了默认系统语言,并且应用无法更改该设置;不过, 该应用支持 70 多种语言。
-
可以。在 Android 中,启动后,
LocationListener
会继续 在后台运行您的应用继续贴靠位置,并保持 方位。在 iOS 中,继续接收关于位置和方位的位置更新 实现道路吸附并设置
allowsBackgroundLocationUpdates
至YES
。 -
可以。创建或更改路由时,
RouteChangeListener
用于提供多段线。 - 否,Navigation SDK 不需要 Google Maps Mobile 要安装在设备上。
- 否,Navigation SDK 目前不提供此功能 。
- 是的。默认情况下,系统会提供并显示路况方向。
- 哪个 Navigation SDK 只有移动服务客户才能使用 API?
-
Navigation SDK 中有几个 API 专供移动服务客户使用,Google 按交易计费。如果您不是移动服务客户,则以下方法不可使用:
问题
- 在 Xcode 12 中,无法针对模拟器正确构建应用。如何解决此问题?
-
如需解决此问题,请打开您的 Xcode 项目对应的“Build Settings”,然后将
arm64
添加到Excluded Architectures
(仅适用于“iOS 模拟器”build)。如需了解详情,请查看下面的 StackOverflow 会话。
- 无法加载 GMSMapView。
-
如果 GMSMapView 未加载:
- 检查是否已在 Cloud 控制台中启用 NavSDK。
- 如果 Nav SDK 已安装,但您的项目未使用 Nav SDK API,请将其从二进制文件中移除。
网络
- Navigation SDK 如何处理连接不佳的问题?
- Navigation SDK 会为每个行程预缓存路线。 预缓存的信息包含 15-20 分钟的路由信息, 并提供备选路线,以防驾驶员偏离路线。通过 Navigation SDK 使用设备 GPS 和 传感器。
- 有离线模式吗?
- 否,Navigation SDK 不提供 离线模式不过,SDK 确实提供了 旅行的理想选择
数据
- 我能否在开始前检索行程中的所有经停点/目的地 路线?
-
可以。在 Android 中,要检索路线的路线,请调用
Navigator.getRouteSegments()
。在 iOS 中,调用
GMSNavigator.routeLegs(read)
。 - 路线的起点是否提供精细路线导航?
- 是的。Navigation SDK 提供了路线段列表。 此外,驾驶员还可以滑动屏幕,浏览标题中的路线卡片 查看每项操作
- 如何向应用用户传达预计到达时间?
-
在 Android 应用中,请按照以下步骤向应用用户提供预计到达时间:
- 使用
Navigator.getTimeAndDistanceList()
。 - 将此信息转发到客户端应用,您可以 目前对司机预计到达时间执行的操作。
在 iOS 应用中,请按照以下步骤向应用用户提供预计到达时间:
- 使用以下方法检索行程中的路程:
Navigator.getRouteSegments()
。 - 为每个旅程路段调用
GMSNavigator.timeToNextDestination
。 - 将时间信息转发到客户端应用,您可以 目前对司机预计到达时间执行的操作。
- 使用
-
RoadSnappedLocationProvider
是否可用于获取驾驶员的 当前捕获的位置(如果导航不在前台运行)? -
可以。在 Android 中,
RoadSnappedLocationProvider
在 默认设置为背景颜色在 iOS 中,如需让导航在后台运行,请实现监听器 (针对
GMSRoadSnappedLocationProviderListener
),并将 属性allowsBackgroundLocationUpdates
更改为TRUE
。 - Navigation SDK 是否支持地理围栏?
-
否。就导航而言,
remainingTimeOrdistanceChangeListener
相比简单地理围栏有优势地理围栏可能不会考虑 并且可能没有像地图绘制的 司机正在导航。您可以使用
remainingTimeOrdistanceChangeListener
。- 设置阈值以确定回调的频率。
- 查看到目的地的剩余距离。
例如,如果您将阈值设为 1 亿, 当到目的地的距离发生变化时,您会收到回调 大约 1 亿随着距离的减少,您可以将此阈值更新为较小的 值,从而更频繁地收到回调。然后,检查与 确定您是否距离上车点/下车点足够近。
在 iOS 中,实现监听器
GMSNavigatorListener.didUpdateRemainingDistance
管理通知之间的距离。 - 我可以停用导航应用程序在后台运行时的通知吗?
-
可以。在 Android 中,使用
Navigator.setHeadsUpNotificationEnabled
来控制通知此方法具有布尔值参数。FALSE
停用通知;TRUE
可启用通知功能。在 iOS 中,通过 设置
GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates
更改为 NO.要停用对其他位置通知的后台处理,请调用
GMSNavigator.sendsBackgroundNotifications(NO)
。
界面自定义
- 我可以用颜色标识最佳路线选项吗?
- 不可以。目前不支持对特定路线选项进行颜色标注。
- Navigation SDK 是否可以显示最终目的地的预计到达时间?
-
可以。在 Android 中,请使用以下方法:
- 使用
Navigator.getTimeAndDistanceList()
。 - 使用“ ”隐藏当前航点的预计到达时间
NavigationFragment.setEtaCardEnabled(false)
。 - 渲染最终到达目的地的预计到达时间。
在 iOS 中,请使用以下代码:
- 调用
GMSNavigator.routeLegs(read)
。 - 在最后一段路程中,
GMSNavigator.timeToNextDestination
。 - 使用“ ”隐藏当前航点的预计到达时间
将
MSMapView.settings.navigationFooterEnabled=NO
更改为 FALSE。 - 渲染最终到达目的地的预计到达时间。
- 使用
- 如何隐藏预计到达时间更新?
-
您可以通过以下方法停用预计到达时间卡片:
- 在 Android 中,使用
navigationView.setEtaCardEnabled(false)
。 - 在 iOS 中,使用
GMSMapView.settings.navigationFooterEnabled=NO
。
- 在 Android 中,使用
-
在 Android 中,您可以使用
StylingOptions
设置背景 颜色样式设置。要隐藏或显示页眉和 请使用setHeaderEnabled
和setFooterEnabled
个成员函数:NavigationFragment
。在 iOS 中,使用
GMSMapView.settings.navigationHeaderPrimaryBackgroundColor
来设置背景颜色样式。隐藏或显示页眉和页脚 使用navigationFooterEnabled
以及GMSUISettings
的navigationHeaderEnabled
属性。
路由
- 我可以提供具体路线吗 还是移除备选路线?
- 否。默认情况下,系统会提供多条路由,并且最快路线具有优先级。 您可以通过添加偏好设置(如“避免 高速公路和收费站”。添加航点也会影响路线。
- 我能否向应用用户显示目标标签(而非默认标签) 目的地?
-
可以。在 Android 中,使用
Marker
目的地和纬度/经度的自定义标题。通过 Navigation SDK 显示自定义标题和坐标 (在NavigationMap
上)。在 iOS 中,您将为目的地创建并显示
GMSMarker
。 - 我可以使用 Navigation SDK 跟踪与指定路径的偏差吗?
-
可以。在 Android 中,使用
Navigator.setRouteChangedListener
执行以下操作 当路线发生变化或有新路线推荐时接收通知:- 注册一个监听器,用于检查设备沿路线的位置
使用
Navigator.setRouteChangedListener
方法。 - 将代码添加到回调事件处理脚本
onRouteChanged
:- 向应用用户发送消息,提供更新后的预计到达时间和距离信息。
- 跟踪设备的位置。
- [可选] 添加您的应用所需的其他功能来处理 当司机偏离指定路线时。
在 iOS 中,使用
GMSNavigator
及其监听器 当路线发生变化或有新路线推荐时接收通知:- 在地图的视图控制器上,实现
GMSNavigatorListener
协议和GMSRoadSnappedLocationProviderListener
协议。 - 实施
GMSNavigatorListener.navigatorDidChangeRoute
。 - 使用
routeLegs
访问新路线,GMSNavigator
的currentRouteLeg
属性。
- 注册一个监听器,用于检查设备沿路线的位置
使用
-
可以。在 Android 中,调用
Navigator.stopGuidance()
方法来 停止导航。在 iOS 中,调用
GMSNavigator.clearDestinations
。
模拟器
- 模拟器是否支持路线更改?
-
可以。在 Android 中,调用
simulateLocationsAlongNewRoute
以 模拟包含路线变更的行程。simulateLocationsAlongExistingRoute
方法会忽略对现有路由的更改。在 iOS 中,使用
GMSLocationSimulator.simulateAlongNewRouteToDestinations
来模拟包含路线变更的行程。如果您预计 如有任何路线变更,您可以使用GMSLocationSimulator.simulateLocationsAlongExistingRoute
或GMSLocationSimulator.simulateAlongNewRouteToDestinations
。
Workflows
- 如何在关闭包含 导航 fragment?
-
导航通知在导航期间始终可见, 当 activity 关闭时触发。当车辆到达 目的地、导航停止,并且通知消失。
如需处理对通知的点击,请使用
Navigator.startGuidance(intent resumeIntent)
。 当应用用户点击通知时,resume intent
就会触发。 通常,Navigator.startguidance(getIntent())
是从 主 activity,当用户点击通知时,它会调用该 activity。