常见问题解答
产品详情
- Navigation SDK 服务条款通知应如何显示?
- 语音指示支持哪些语言?
- 当用户退出导航模式时,航向是否会保持不变?
- 启动或更改路线时,是否可以使用多段线?
- 应用用户是否需要安装 Google 地图移动版?
- Navigation SDK 能否识别餐厅和其他目的地附近的停车场?
- Navigation SDK 在接近转弯点时是否会显示车道的车流方向?
- Navigation SDK 支持哪些版本的 JDK?
网络和连接
数据
- 我可以在开始路线之前检索行程中的所有经停点/目的地吗?
- 在路线开始时是否提供精细路线指引?
- 如何向应用用户传达预计到达时间 (ETA)?
- 如果导航应用不在前台运行,能否使用
RoadSnappedLocationProvider
获取用户的当前贴靠位置? - Navigation SDK 是否支持地理围栏?
- 我可以在导航应用在后台运行时停用通知吗?
- 如何查看 Google 保留的交易日志?
界面自定义
路由
- 我可以向用户提供特定路线或移除备选路线吗?
- 我可以向用户显示与默认目的地位置不同的目的地标签吗?
- 我可以使用 Navigation SDK 跟踪与定义的路径的偏差吗?
- 用户是否可以在未完成路线的情况下退出导航?
模拟器
Workflows
Mobility 服务
- 移动出行服务客户使用 Navigation SDK 的方式有何不同?
- 如何判断我是否为移动出行服务客户?
- Mobility Services 客户如何为 Navigation SDK 付费?
- 哪些 Navigation SDK API 仅供 Mobility Services 客户使用?
- 如果我是 Mobility Services 客户,还可以使用 Navigation SDK 的非 Mobility Services 实现吗?
产品详情
-
您的应用必须实现一个包含 Navigation SDK 服务条款通知的对话框,并且每位用户都必须接受该通知。此对话框可让用户有机会同意服务条款。Navigation SDK 随附了包含这些条款的文本文件。
使用
NavigationApi.showTermsAndConditionsDialog
方法显示包含条款的对话框。 - Google 地图移动版支持的任何语言都自动适用于 Navigation SDK。设备具有默认系统语言,应用无法更改该设置;不过,该应用支持 70 多种语言。
-
可以。启动后,
LocationListener
会继续在后台运行。您的应用会继续沿道路对位置进行贴靠,并保持航向。 -
可以。创建或更改路线时,
RouteChangeListener
会提供多段线。 - 否,Navigation SDK 不需要在设备上安装 Google 地图移动版。
- 否,Navigation SDK 目前不提供此功能。
- 是的。默认情况下,系统会显示交通方向。
- Navigation SDK 支持哪些版本的 JDK?
- Navigation SDK 支持 Oracle 积极支持的 LTS 版本的 Java SE。Oracle Java SE 支持路线图中将这些版本列为提供 Premier 支持。
网络和连接
- Navigation SDK 如何处理网络连接不佳?
- Navigation SDK 会预先缓存每条行程的路线。预缓存的信息包括 15-20 分钟的路线信息,以及在用户偏离路线时可供选择的替代路线。Navigation SDK 使用设备 GPS 和传感器来估算位置。
- Navigation SDK 如何处理 GPS 信号不佳或丢失的情况?
-
导航开始且 Navigation SDK 至少收到一次 GPS 信号后,在以下情况下,它会显示“正在搜索 GPS...”消息:
- 如果自上次收到 GPS 信号以来已经超过 10 秒。
- 如果自上次收到 GPS 信号以来,路线位置已移动超过 500 米。
如果 SDK 长时间未收到 GPS 信号,沿路线的进度(在应用中由箭头的位置表示)可能会放慢,直到完全停止。在这种情况下,地图上的箭头将保持在上一个 GPS 信号所指示的位置。SDK 不会因未收到 GPS 信号而自动退出导航模式。不过,在重新收到信号之前,它可能无法提供导航。
- 是否支持离线模式?
- 否,Navigation SDK 目前不提供离线模式;不过,该 SDK 确实会提供行程的预缓存信息。
数据
- 我可以在开始路线之前检索行程中的所有经停点/目的地吗?
-
可以。如需检索路线的路线图,请调用
Navigator.getRouteSegments()
。 - 路线起点是否提供精细导航路线?
- 是的。Navigation SDK 提供了路线片段列表。此外,用户可以滑动标题中的路线卡片,查看每项操作。
- 如何向应用用户传达预计到达时间?
-
如需向应用用户提供预计到达时间信息,请按以下步骤操作:
- 使用
Navigator.getTimeAndDistanceList()
检索所有航点的时间和距离。 - 将此信息转发给客户端应用,就像为司机预计到达时间所做的那样。
- 使用
-
如果导航应用不在前台运行,能否使用
RoadSnappedLocationProvider
获取用户的当前贴靠位置? -
可以。
RoadSnappedLocationProvider
默认在后台运行。 - Navigation SDK 是否支持地理围栏?
-
不可以。在导航方面,
remainingTimeOrdistanceChangeListener
比地理围栏更有优势。地理围栏可能未考虑道路几何形状,并且可能未以用户导航到的确切位置为中心。您可以使用
remainingTimeOrdistanceChangeListener
近似地实现此功能。- 设置阈值以确定回调的频率。
- 查看到达目的地所剩的距离。
例如,如果您将阈值设置为 100 米,则当距离目的地的距离发生 100 米的变化时,您会收到回调。随着距离的缩短,您可以将此阈值更新为更小的值,并更频繁地接收回调。然后,检查剩余距离,确定您是否已靠近上车点/下车点。
- 我可以在导航应用在后台运行时停用通知吗?
-
可以。使用
Navigator.setHeadsUpNotificationEnabled
控制通知。此方法有一个布尔值参数。FALSE
会停用通知;TRUE
会启用通知。 -
交易记录器会使用唯一 ID 跟踪上车和下车,Google 会记录这些 ID 以便进行产品分析。如果您是 Mobility Services 客户,Google 建议您实现
NavigationTransactionRecorder
以记录交易记录。
界面自定义
- 我可以为最佳路线选项设置颜色代码吗?
- 不可以。目前不支持为特定路线选项设置颜色编码。
- Navigation SDK 能否显示最终目的地的预计到达时间?
-
可以。请使用以下方法:
- 使用
Navigator.getTimeAndDistanceList()
检索所有航点的时间和距离。 - 使用
NavigationFragment.setEtaCardEnabled(false)
隐藏当前航点的预计到达时间。 - 渲染最终目的地的预计到达时间 (ETA)。
- 使用
- 如何隐藏 ETA 更新?
-
您可以通过调用
navigationView.setEtaCardEnabled(false)
停用 ETA 卡片。 -
使用
StylingOptions
设置背景颜色样式。如需隐藏或显示标题和页脚,请使用NavigationFragment
的setHeaderEnabled
和setFooterEnabled
成员函数。
路由
- 我可以向用户提供特定路线或移除备选路线吗?
- 否。默认情况下,系统会提供多条路线,并且最快的路线具有优先级。 您可以通过向请求添加偏好设置(例如“避开高速公路和收费公路”)来影响默认路线。添加路径点也会影响路线。
- 我可以向应用用户显示与默认目的地位置不同的目的地标签吗?
-
可以。创建一个
Marker
,为目的地设置自定义标题和纬度/经度。Navigation SDK 会在NavigationMap
上显示自定义标题和坐标。 - 我可以使用 Navigation SDK 跟踪与定义的路径的偏差吗?
-
可以。使用
Navigator.setRouteChangedListener
在路线发生变化或系统建议新路线时接收通知:- 使用
Navigator.setRouteChangedListener
方法注册一个监听器,用于检查沿路线的设备位置。 - 向回调事件处理脚本
onRouteChanged
添加代码:- 向应用用户发送消息,其中包含更新后的预计到达时间和距离信息。
- 跟踪设备的位置信息。
- [可选] 添加应用在用户偏离规定路线时需要处理的其他功能。
- 使用
-
可以。调用
Navigator.stopGuidance()
方法以停止导航。
模拟器
- 模拟器是否支持路线更改?
-
可以。调用
simulateLocationsAlongNewRoute
以模拟包含路线更改的行程。simulateLocationsAlongExistingRoute
方法会忽略对现有路线所做的更改。
Workflows
- 如何在关闭包含导航 fragment 的 activity 后关闭通知?
-
在导航过程中,当 activity 关闭时,导航通知仍会显示。当车辆到达目的地时,导航会停止,并且通知会消失。
如需处理通知点击,请使用
Navigator.startGuidance(intent resumeIntent)
。 当应用用户点击通知时,系统会触发resume intent
。 通常,Navigator.startguidance(getIntent())
是从主 activity 调用的,该 activity 会在应用用户点击通知时重新调用。
Mobility 服务
Google Maps Platform 出行服务提供了一系列 API 和 SDK,可帮助满足交通运输和物流企业的企业需求。对于移动出行服务客户,导航 SDK 通常与相关服务搭配使用,用于路线优化、调度、任务跟踪、车队分析等。对于移动出行服务客户,Navigation SDK 的结算方式也不同。如需了解详情,请参阅移动服务文档。
移动产品目前仅面向部分客户提供。如需了解详情,请与您的销售代表联系。
ReportBillableEvent
调用。只有移动出行服务客户应调用 ReportBillableEvent
方法。
Navigation SDK 中有一些 API 仅供移动出行服务客户使用,Google 会按交易向这些客户收费。如果您不是移动流量服务客户,则以下方法无效:
可以。Mobility Services 客户可以同时使用 Navigation SDK 的 Mobility Services 和非 Mobility Services 实现。不过,您一次只能在应用中使用一种实现类型。您还需要创建一个新的 Google Cloud 项目、结算账号和 API 密钥,这些项目、账号和密钥应与您在实现移动出行服务时使用的项目、账号和密钥分开。如需了解详情,请参阅 Navigation SDK 设置概览。
如需详细了解如何使用 Navigation SDK 的非 Mobility Services 实现(包括将应用从一种实现类型迁移到另一种实现类型),请与您的 Google 客户代表联系。
注意:如果您目前不是 Mobility Services 客户,但有兴趣详细了解 Mobility Services 集合中的 API 和 SDK,请与 Google Maps Platform 销售团队联系。