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