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