【鸿蒙next教程】车载组件:navigationInfoMgr(导航信息管理)
本文详细介绍了鸿蒙HarmonyOS Next的导航开发功能,重点解析了CarKit提供的导航信息管理模块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)