【鸿蒙next教程】车载组件:navigationInfoMgr(导航信息管理)
往期鸿蒙5.0全套实战文章必看:(文中附带鸿蒙5.0全栈学习资料)
navigationInfoMgr(导航信息管理)
Car Kit提供地图导航聚合能力集,对外提供包括发起/结束导航操作、导航信息、TBT信息、仪表/ARHUD信息界面基类等导航聚合能力集接口。以SystemAbility形式部署在手机上。
起始版本:4.1.0(11)
导入模块
import { navigationInfoMgr } from '@kit.CarKit';
NavigationStatus
该类为导航信息状态对象,定义了导航的状态信息,包括地图状态、导航类型、导航目的地、导航途经点、路线、地图和主题等。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| status | 否 | 否 | 地图状态。 | |
| naviType | 否 | 否 | 导航类型。 | |
| destLocation | 否 | 否 | 当status是MapStatus.NAVIGATION时,该字段表示目的地地址。 当status是MapStatus.POI时,该字段表示POI信息。 当status是MapStatus.CRUISE时,该字段表示CRUISE信息。 当status是MapStatus.IDLE时,该字段无实际意义。 当status是MapStatus.ROUTE时,该字段表示目的地地址。 当status是MapStatus.UNAVAILABLE时,该字段无实际意义。 | |
| passPoint | Location[] | 否 | 否 | 途经点数组。 |
| routeIndex | number | 否 | 否 | 路线编号,大于等于0。 |
| routePreference | 否 | 否 | 路线偏好。 | |
| theme | 否 | 否 | 地图主题色。 | |
| customData | String | 否 | 否 | 自定义数据。 |
MapStatus
地图状态枚举值,列举出地图具体的状态。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
| 名称 | 值 | 说明 |
|---|---|---|
| IDLE | 0 | 地图处于空闲态。说明:地图应用未启动时,默认为该值。 |
| NAVIGATION | 1 | 地图处于导航中。 |
| CRUISE | 2 | 地图处于巡航中。 |
| POI | 3 | 地图处于地图选点状态。 |
| ROUTE | 4 | 地图处于路线选择状态。 |
| UNAVAILABLE | 5 | 地图服务不可用。 说明 地图应用内部错误无法提供服务时,设置该值。 |
NaviType
导航类型枚举值。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
| 名称 | 值 | 说明 |
|---|---|---|
| DRIVING | 0 | 驾车类型。 |
| MOTORCYCLE | 1 | 摩托车类型。 |
| CYCLING | 2 | 骑行类型。 |
| WALKING | 3 | 步行类型。 |
Location
地理位置坐标编码。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| name | string | 否 | 否 | 地址名称。 |
| coordType | 否 | 否 | 地理位置坐标系编码。 | |
| longitude | number | 否 | 否 | 目的地经度,结合coordType使用。 |
| latitude | number | 否 | 否 | 目的地纬度,结合coordType使用。 |
| altitude | number | 否 | 否 | 目的地海拔高度,单位:m,默认值:0。 |
LocationCoordType
地理位置坐标系编码枚举值。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
| 名称 | 值 | 说明 |
|---|---|---|
| GCJ02 | 0 | 国内坐标编码。 |
| WGS84 | 1 | 国际坐标编码。 |
RoutePreference
路线偏好枚举值。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
| 名称 | 值 | 说明 |
|---|---|---|
| INTELLIGENT_RECOMMENDATION | 0 | 智能推荐。 |
| HIGHWAY_FIRST | 1 | 高速优先。 |
| AVOID_HIGHWAY | 2 | 不走高速。 |
| AVOID_CONGESTION | 3 | 躲避拥堵。 |
| LESS_CHARGE | 4 | 少收费。 |
| MAIN_ROAD_FIRST | 5 | 大路优先。 |
| TIME_FIRST | 6 | 时间优先。 |
ThemeType
地图主题颜色枚举值。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
| 名称 | 值 | 说明 |
|---|---|---|
| LIGHT | 0 | 地图是浅色主题。 |
| DARK | 1 | 地图是深色主题。 |
NavigationMetadata
该类为导航信息数据对象,定义了导航的数据信息,包括导航转向模式、引导距离、当前道路名、下一次进入道路名等。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| naviTurnMode | number | 否 | 否 | 导航转向模式,十六进制,取值范围0~3E7,参考附录,按照16进制的格式传递。 |
| segmentLeftDis | number | 否 | 否 | 下一次动作剩余距离,即引导距离,单位:m。 |
| currentRoadName | string | 否 | 否 | 当前道路名。 |
| nextRoadName | string | 否 | 否 | 下一次进入的道路名。 |
| intersectionView | string | 否 | 否 | 路口放大图。 图片的Base64字节编码值 。 |
| viewWidth | number | 否 | 否 | 路口放大图片宽度,单位:像素。 |
| viewHeight | number | 否 | 否 | 路口放大图片高度,单位:像素。 |
| trafficLane | string | 否 | 否 | 车道线,从最左边到最右边按序排列。通讯以四位为一个单元进行解析,每个单元对应一个车道线,根据需求可以传多个车道线,图标编码为枚举值,具体参考附录。 |
| cameraSpeedLimitValid | boolean | 否 | 否 | 电子眼限速有效位。true表示有效,false表示无效。 |
| cameraSpeedLimit | number | 否 | 否 | 电子眼限速值,单位:m/s。 |
| naviSpeedLimitValid | boolean | 否 | 否 | 导航限速有效位。true表示有效,false表示无效。 |
| naviSpeedLimit | number | 否 | 否 | 导航限速值,单位:m/s。 |
| currentSpeed | number | 否 | 否 | 当前车速,单位:m/s。 |
| naviBearing | number | 否 | 否 | 导航方向角度,即相对正北方的角度。 |
| totalLeftDis | number | 否 | 否 | 全程剩余距离,单位:m。 |
| remainingTime | number | 否 | 否 | 剩余时间,单位:min。 |
| customData | Record<string, Object> | 否 | 是 | 按自定义模式传递导航元数据。 起始版本:5.0.0(12) |
SystemNavigationListener
系统导航监听回调。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
onQueryNavigationInfo
onQueryNavigationInfo(query: QueryType, args: Record<string, Object>): Promise<ResultData>
应用收到系统的查询请求,然后通过Promise回调给系统。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | 是 | 查询命令。 | |
| args | Record<string, Object> | 是 | query参数的附加参数。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<ResultData> | Promise对象,返回查询导航信息的结果。 |
示例:
回调方法,具体代码示例见registerSystemNavigationListener示例。
onReceiveNavigationCmd
onReceiveNavigationCmd(command: CommandType, args: Record<string, Object>): Promise<ResultData>
应用收到系统发送的指令,然后通过Promise回调给系统。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| command | 是 | 系统服务需要应用执行的命令。 | |
| args | Record<string, Object> | 是 | command参数为"startNavigation"或"stopNavigation"时使用,比如导航类型有:驾车导航、摩托车导航、骑行导航、步行导航等。 "destLocation":导航目的地,其参数类型为Location。与command参数等于"startNavigation"配合使用。 "mapLayerDisplayId":将地图图层启动到屏幕的displayId。与command参数等于"startMapLayer"或"stopMapLayer"配合使用。 "newTheme":通知应用改变新主题,如黑白切换,与command参数为"changeTheme"时配合使用。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<ResultData> | Promise对象,返回发送指令的结果。 |
示例:
回调方法,具体代码示例见registerSystemNavigationListener示例。
QueryType
查询导航信息枚举类型。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
| 名称 | 值 | 说明 |
|---|---|---|
| NAVIGATION_STATUS | navigationStatus | 查看导航状态,callback返回数据为NavigationStatus。 |
| NAVIGATION_METADATA | navigationMetadata | 查看导航TBT信息,callback返回数据为NavigationMetadata。 |
CommandType
发送指令枚举类型。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
| 名称 | 值 | 说明 |
|---|---|---|
| START_NAVIGATION | startNavigation | 发起导航接口。 |
| STOP_NAVIGATION | stopNavigation | 停止导航接口。 |
| GO_HOME | goHome | 导航回家。 |
| GO_TO_COMPANY | goToCompany | 导航去公司。 |
| START_MAP_LAYER | startMapLayer | 启动地图图层到其他屏幕。 |
| STOP_MAP_LAYER | stopMapLayer | 销毁其他屏幕上的地图图层。 |
| ZOOM_IN_MAP | zoomInMap | 放大地图。 |
| ZOOM_OUT_MAP | zoomOutMap | 缩小地图。 |
| CHANGE_THEME | changeTheme | 更改主题。 |
| START_UPDATE_NAVIGATION_STATUS | startUpdateNavigationStatus | 开始更新导航状态。 起始版本:5.0.0(12) |
| STOP_UPDATE_NAVIGATION_STATUS | stopUpdateNavigationStatus | 停止更新导航状态。 起始版本:5.0.0(12) |
ResultData
查询导航信息或发送指令的结果。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| code | number | 否 | 否 | 错误码。 |
| message | string | 否 | 否 | 错误信息。 |
| data | { [key: string]: object } | 否 | 否 | 附加信息,应用可以根据实际需要以键值对的形式返回给系统。 |
getNavigationController
getNavigationController(): NavigationController
用于获取导航信息服务的控制器。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
返回值:
| 类型 | 说明 |
|---|---|
| 导航信息服务的控制器。 |
示例:
import { navigationInfoMgr } from '@kit.CarKit';
let naviInfoController: navigationInfoMgr.NavigationController = navigationInfoMgr.getNavigationController();
NavigationController
导航信息服务的控制器,用于获取导航信息服务。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
updateNavigationStatus
updateNavigationStatus(navigationStatus: NavigationStatus): void
设置导航状态,包含地图状态、导航类型、导航目的地、导航途径点、路线、地图和主题等。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| navigationStatus | 是 | 导航状态,包含地图状态、导航类型、导航目的地、导航途径点、路线、地图和主题等。 |
示例:
import { navigationInfoMgr } from '@kit.CarKit';
// 获取NavigationController
let naviInfoController: navigationInfoMgr.NavigationController = navigationInfoMgr.getNavigationController();
// 设置导航状态属性
let navigationStatus: navigationInfoMgr.NavigationStatus = {} as navigationInfoMgr.NavigationStatus;
navigationStatus.status = navigationInfoMgr.MapStatus.NAVIGATION;
navigationStatus.naviType = navigationInfoMgr.NaviType.DRIVING;
navigationStatus.customData = 'eb7666ff9b8d48beb28782cc0f7ba545';
naviInfoController.updateNavigationStatus(navigationStatus);
updateNavigationMetadata
updateNavigationMetadata(navigationMetadata: NavigationMetadata): void
设置导航数据,包含导航转向模式、引导距离、当前道路名、下一次进入道路名等。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| navigationMetadata | 是 | 导航数据,包含导航转向模式、引导距离、当前道路名、下一次进入道路名等。 |
示例:
import { navigationInfoMgr } from '@kit.CarKit';
// 获取NavigationController
let navInfoController: navigationInfoMgr.NavigationController = navigationInfoMgr.getNavigationController();
// 设置数据属性
let data: navigationInfoMgr.NavigationMetadata = {
naviTurnMode: 0x0001,
segmentLeftDis: 100,
currentRoadName: 'currentRoad',
nextRoadName: 'nextRoad',
intersectionView: 'intersectionView',
viewWidth: 960,
viewHeight: 450,
trafficLane: '0001',
cameraSpeedLimitValid: false,
cameraSpeedLimit: 120,
naviSpeedLimitValid: true,
naviSpeedLimit: 80,
currentSpeed: 75,
naviBearing: 90.00000000000000,
totalLeftDis: 1546,
remainingTime: 5,
customData: { 'sample': 'sampleData' }
};
navInfoController.updateNavigationMetadata(data);
registerSystemNavigationListener
registerSystemNavigationListener(listener: SystemNavigationListener): void
注册监听系统导航信息和指令,应用启动时需要调用该方法。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| listener | 是 | 注册监听系统导航信息和指令。 |
示例:
import { navigationInfoMgr } from '@kit.CarKit';
// 实现SystemNavigationListener接口
class Listener implements navigationInfoMgr.SystemNavigationListener {
// 实现onQueryNavigationInfo方法
onQueryNavigationInfo(query: navigationInfoMgr.QueryType, args: Record<string, Object>): Promise<navigationInfoMgr.ResultData> {
return new Promise(resolve => {
let ret: navigationInfoMgr.ResultData = {
code: 1001,
message: 'message test1',
data: args
}
resolve(ret);
})
}
// 实现onReceiveNavigationCmd方法
onReceiveNavigationCmd(command: navigationInfoMgr.CommandType, args: Record<string, Object>): Promise<navigationInfoMgr.ResultData> {
return new Promise(resolve => {
let ret: navigationInfoMgr.ResultData = {
code: 1002,
message: 'message test2',
data: args
}
resolve(ret);
})
}
}
let navInfoController: navigationInfoMgr.NavigationController = navigationInfoMgr.getNavigationController();
navInfoController.registerSystemNavigationListener(new Listener());
unregisterSystemNavigationListener
unregisterSystemNavigationListener(): void
取消注册监听系统导航信息和指令。
系统能力:SystemCapability.CarService.NavigationInfo
起始版本:4.1.0(11)
示例:
import { navigationInfoMgr } from '@kit.CarKit';
let navInfoController: navigationInfoMgr.NavigationController = navigationInfoMgr.getNavigationController();
navInfoController.unregisterSystemNavigationListener();
更多推荐



所有评论(0)