导航指令列表
功能介绍
导航过程中,SDK 在路线引导信息变化时,通过 NavigationEventListener.onTurnByTurnListUpdated 下发机动列表(List<ManeuverInfo>),供 HMI 展示导航指令列表。

列表范围: 不一定是一次性给出起点到终点的全部机动。长距离路线时,可能先回调约 50 km 范围内可计算的部分引导(partial guidance),待引导数据补全后再回调完整列表(full guidance)。每次回调仍应从路线起点起按顺序排列,HMI 应以最新一次整表为准刷新 UI。
核心接口:
| 接口 | 说明 |
|---|---|
NavigationEventListener.onTurnByTurnListUpdated(maneuverInfoList) |
机动列表推送更新(可能先部分、后完整;必实现) |
NavigationSession.getManeuverList() |
主动查询;返回上一次 onTurnByTurnListUpdated 缓存的列表 |
与 导航状态信息 的区别:
| 回调 | 频率 / 范围 | 用途 |
|---|---|---|
onNavigationEventUpdated |
约 1 Hz;含 currentManeuver、distanceToTurn 等 |
主界面当前引导与 ETA |
onTurnByTurnListUpdated |
事件驱动;当前已可用的机动列表(可能先部分、后完整) | 导航指令列表 UI、路线预览、地图转向箭头等 |
二者数据类型均为 ManeuverInfo,字段说明见 导航状态信息。
前置条件: 已 startNavigation 并持有 NavigationSession;已注册 NavigationEventListener(若使用推送更新)。
流程概览
1 2 3 4 5 6 7 | |
接口说明
推送更新:onTurnByTurnListUpdated
1 | |
主动查询:getManeuverList
1 | |
导航过程中调用本接口,返回的是上一次 onTurnByTurnListUpdated 推送的机动列表(SDK 内部缓存)。尚未收到过导航指令列表回调、或导航已结束时返回 null。列表更新仍以 onTurnByTurnListUpdated 为准;本接口适用于界面恢复等需要同步读取当前缓存的场景。
触发条件
以下情况之一发生时,SDK 会刷新并回调导航指令列表:
- 导航中的路线发生变化(偏航触发更新路线、接受更优路/备选路、主动更新路线请求等,参见 换路通知)
- 该路线的引导信息更新
- TA SDK 系统语言变更
ManeuverInfo 常用字段(摘要)
完整字段、Action / AssistAction、车道与路盾等见 导航状态信息。
| 字段 | 说明 |
|---|---|
legIndex / stepIndex |
机动所属 leg、step(从 0 开始) |
turnAction / turnAssistAction |
主转向与辅助动作(绘制图标时通常组合使用) |
streetName |
转弯后道路名 |
signpostBranchNames / signpostTowardsNames |
路牌分支名 / 方向名(见 概述) |
laneInfo |
车道引导(从左至右) |
shieldInfoList |
路盾;图标经 NavigationService.renderIcon 渲染 |
roundaboutInfo / exitLabel |
环岛 / 高速出口信息 |
stepInfo |
所属 step,可用于地图 showTurnArrow、路线修改 的 setAvoidSteps 等 |
isTightTurn |
紧接转弯;为 true 时,该机动也会出现在 1 Hz 的 nextManeuver 中,含义相同 |
fromRoadClass / toRoadClass |
转弯前/后道路等级 |
示例代码
刷新导航指令列表
1 2 3 4 5 6 | |
与其它能力的关系
| 能力 | 关系 |
|---|---|
| 导航状态信息 | currentManeuver / nextManeuver 为实时进度;本列表为当前已下发的规划机动 |
| 换路通知 | 换路成功后通常会再次触发本回调,需按新路线整表刷新 |
| 路线修改 | maneuver.stepInfo 可构造 StepInfo 用于 setAvoidSteps |
注意事项
getManeuverList(): 返回上一次onTurnByTurnListUpdated的缓存,不会单独触发新的计算。- 部分 → 完整: 长路线可能先收到 partial 列表(约 50 km 量级),引导补全后再次回调;条数会增加,应整表覆盖更新。
- 整表刷新: 引导更新后列表条数可能变化,应以最新一次
onTurnByTurnListUpdated为准。 - 回调线程: Message 线程,更新 UI 请切主线程。
- 最后一项: 完整列表时多为到达终点(
streetName为空);部分列表时最后一项仅为当前段的末转,勿误判为终点。