常见问题解答

产品详情

网络和连接

数据

界面自定义

路由

模拟器

Workflows

Mobility 服务

产品详情

您的应用必须使用 Navigation SDK 实现对话框 每位用户必须接受的服务条款通知。此对话框提供了 同意服务条款的机会。Navigation SDK 随附了包含这些条款的文本文件。 使用 NavigationApi.showTermsAndConditionsDialog 方法显示包含条款的对话框。
Google 地图移动版支持的任何语言都自动适用于 Navigation SDK。设备设置了默认系统语言,并且应用无法更改该设置;不过, 该应用支持 70 多种语言。

可以。启动后,LocationListener 会持续 在后台运行您的应用会继续沿道路对位置进行贴靠,并保持航向。

可以。创建或更改路线时,RouteChangeListener 会提供多段线。

否,Navigation SDK 不需要 Google Maps Mobile 要安装在设备上。
否,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 信号,沿路线的进度(在应用中由箭头的位置表示)可能会放慢,直到完全停止。在这种情况下,地图上的 V 形将保持在上次 GPS 信号指示的位置。SDK 不会因未收到 GPS 信号而自动退出导航模式。不过,在重新收到信号之前,它可能无法提供导航。

是否支持离线模式?
否,Navigation SDK 目前不提供离线模式;不过,该 SDK 确实会提供行程的预缓存信息。

数据

我可以在开始路线之前检索行程中的所有经停点/目的地吗?

可以。要检索路线的路线,请调用 Navigator.getRouteSegments()

路线起点是否提供精细的路线指引?
可以。Navigation SDK 提供了路线片段列表。此外,用户可以滑动标题中的路线卡片,查看每项操作。
如何向应用用户传达预计到达时间?

如需向应用用户提供预计到达时间信息,请按以下步骤操作:

  1. 使用 Navigator.getTimeAndDistanceList() 检索所有航点的时间和距离。
  2. 将此信息转发给客户端应用,就像为司机预计到达时间所做的那样。
RoadSnappedLocationProvider 是否可以用于获取用户的 当前捕获的位置(如果导航不在前台运行)?

可以。RoadSnappedLocationProvider在 默认设置为背景颜色

Navigation SDK 是否支持地理围栏?

否。就导航而言,remainingTimeOrdistanceChangeListener 比地理围栏有优势地理围栏可能不会考虑 并且可能没有像地图绘制的 用户正在导航。

您可以使用 remainingTimeOrdistanceChangeListener

  1. 设置阈值以确定回调的频率。
  2. 查看到目的地的剩余距离。

例如,如果您将阈值设为 1 亿, 当到目的地的距离发生变化时,您会收到回调 大约 1 亿随着距离的减少,您可以将此阈值更新为较小的 值,从而更频繁地收到回调。然后,检查剩余距离,确定您是否已靠近上车点/下车点。

我可以在导航应用在后台运行时停用通知吗?

可以。使用Navigator.setHeadsUpNotificationEnabled 来控制通知此方法有一个布尔值参数。FALSE 停用通知;TRUE 可启用通知功能。

交易记录器会使用唯一 ID 跟踪上车和下车数据,Google 会记录这些数据以进行产品分析。如果您是 Mobility Services 客户,Google 建议您实现 NavigationTransactionRecorder 以记录交易记录。

界面自定义

我可以为最佳路线选项设置颜色代码吗?
不可以。目前不支持对特定路线选项进行颜色标注。
Navigation SDK 能否显示最终目的地的预计到达时间?

可以。请使用以下方法:

  1. 使用 Navigator.getTimeAndDistanceList()
  2. 使用 NavigationFragment.setEtaCardEnabled(false) 隐藏当前航点的预计到达时间。
  3. 渲染最终到达目的地的预计到达时间。
如何隐藏预计到达时间更新?

您可以通过调用 navigationView.setEtaCardEnabled(false) 停用预计到达时间卡片。

标题卡和页脚卡支持哪些界面自定义?

使用 StylingOptions 设置背景 颜色样式设置。如需隐藏或显示标题和页脚,请使用 NavigationFragmentsetHeaderEnabledsetFooterEnabled 成员函数。

路由

我可以提供具体路线吗 或移除备选路线?
否。默认情况下,系统会提供多条路由,并且最快路线具有优先级。 您可以通过添加偏好设置(如“避免 高速公路和收费站”。添加航点也会影响路线。
我可以向应用用户显示与默认目的地位置不同的目的地标签吗?

可以。创建一个 Marker,其中包含 目的地和纬度/经度的自定义标题。Navigation SDK 会在 NavigationMap 上显示自定义标题和坐标。

我可以使用 Navigation SDK 跟踪与指定路径的偏差吗?

可以。使用 Navigator.setRouteChangedListener 在路线发生变化或系统建议新路线时接收通知:

  1. 注册一个监听器,用于检查设备沿路线的位置 使用 Navigator.setRouteChangedListener 方法。
  2. 将代码添加到回调事件处理脚本 onRouteChanged
    • 向应用用户发送消息,提供更新后的预计到达时间和距离信息。
    • 跟踪设备的位置。
    • [可选] 添加应用在用户偏离规定路线时需要处理的其他功能。
用户是否可以在未完成路线的情况下退出导航?

可以。调用 Navigator.stopGuidance() 方法以停止导航。

模拟器

模拟器是否支持路线更改?

可以。致电simulateLocationsAlongNewRoute 模拟包含路线变更的行程。simulateLocationsAlongExistingRoute 方法会忽略对现有路线所做的更改。

Workflows

如何在关闭包含 导航 fragment?

在导航过程中,当 activity 关闭时,导航通知仍会显示。当车辆到达目的地时,导航会停止,并且通知会消失。

如需处理通知点击,请使用 Navigator.startGuidance(intent resumeIntent)resume intent 会在应用用户点击通知时触发。 通常,Navigator.startguidance(getIntent()) 是从主 activity 调用的,该 activity 会在应用用户点击通知时重新调用。

Mobility 服务

Mobility Services 客户使用 Navigation SDK 的方式有何不同?

Google Maps Platform 出行服务提供了一系列 API 和 SDK,可帮助满足交通运输和物流企业的企业需求。对于移动服务客户,Navigation SDK 通常与相关服务结合使用,以实现路线优化、调度、任务跟踪、车队分析等。对于移动出行服务客户,Navigation SDK 的结算方式也不同。如需了解详情,请参阅移动服务文档。

移动产品目前仅面向部分客户提供。如需了解详情,请与您的销售代表联系。

如何判断我是否为移动服务客户?
如果您不确定自己目前是否作为 Mobility Services 客户实现 Navigation SDK,请在代码中查找 ReportBillableEvent 调用。只有移动服务客户才应调用 ReportBillableEvent 方法。

如何向 Mobility Services 客户收取 Navigation SDK 费用?
对于移动服务客户,Navigation SDK 的结算方式和价格取决于您与 Google Maps Platform 签订的服务协议。如需了解如何确保正确结算您的移动服务实现,请参阅结算验证。有关移动服务结算的其他信息,请与您的销售代表联系。

哪些 Navigation SDK API 仅供 Mobility Services 客户使用?

Navigation SDK 中有一些 API 仅供移动出行服务客户使用,Google 会按交易向这些客户收费。如果您不是移动服务客户,则以下方法不可使用:

如果我是 Mobility Services 客户,还可以使用 Navigation SDK 的非 Mobility Services 实现吗?

是的,移动服务客户可以使用导航 SDK 的移动服务实现和非移动服务实现。但是,一个应用中一次只能使用一种实现类型。您还需要创建一个新的 Google Cloud 项目、结算账号和 API 密钥,这些项目、账号和密钥应与您在移动出行服务实现中使用的项目、账号和密钥分开。如需了解详情,请参阅 Navigation SDK 设置概览

如需详细了解如何使用 Navigation SDK 的非 Mobility Services 实现(包括将应用从一种实现类型迁移到另一种实现类型),请与您的 Google 客户代表联系。

注意:如果您目前不是 Mobility Services 客户,但有兴趣详细了解 Mobility Services 集合中的 API 和 SDK,请与 Google Maps Platform 销售团队联系