导航实时数据获取 最后更新时间: 2026年05月29日
在实际驾车导航中,导航SDK会通过AMapNaviListener监听器实时的透出导航信息与数据,可帮助您进行UI的定制化开发,是HUD和智能硬件的解决方案。骑行、步行与驾车一致,同样可以通过AMapNaviListener来获取导航事件与数据。
注册一般导航事件与数据监听(驾车、骑行、步行通用):
naviInstance = AMapNaviFactory.getAMapNaviInstance(getContext().getApplicationContext(), appkey)
naviInstance.addAMapNaviListener({
// 导航数据数据更新回调
onNaviInfoUpdate: (naviInfo: INaviInfo) => {
LogUtil.i('Navi_Demo','naviListener', 'onNaviInfoUpdate: ' + naviInfo.mRouteRemainDis + ' onUpdateNaviInfo curRouteName: ' + naviInfo.mCurRoadName)
},
// 算路成功回调
onCalculateRouteSuccess: (routeResult: IAMapCalcRouteResult | null) => {
console.info('demo 算路成功')
},
// 开始导航回调
onStartNavi: (type: number) => {
console.info('onStartNavi: ' + type)
}
})主要导航信息NaviInfo
NaviInfo主要指的是导航信息,比如当前道路名称、距离终点的时间和距离、没有避开的设施信息等。可通过AMapNaviListener中的onNaviInfoUpdate 回调接口更新导航信息。自定义导航视图AMapNaviView,以及导航组件中导航页顶部诱导面板、底部面板的信息,就是主要从该回调获取的。
/**
* 导航引导信息回调。
*
* @param naviInfo 导航信息类对象。
* @since 1.0.0
*/
onNaviInfoUpdate?: (naviInfo: INaviInfo) => void

路口放大图
路口放大图包含了显示和隐藏两个回调,又根据放大图类别为实景图还是模型图分为两套,一共4个回调,均位于MessageDispatcher中,仅对驾车有效,如下:
/**
* 显示路口放大图(模型图)
*/
public showModeCross(modelCross: AMapModelCross): void {
this.doShowModeCross(modelCross);
}
/**
* 显示路口放大图(实景图)
*/
public showCross(cross: AMapNaviCross): void {
this.doShowCross(cross);
}
/**
* 隐藏路口放大图(模型图)
*/
public hideModeCross(): void {
this.doHideModeCross();
}
/**
* 隐藏路口放大图(实景图)
*/
public hideCross(): void {
this.doHideCross();
}

车道线
//显示车道线信息
showLaneInfo = (laneInfo: IAMapLaneInfo | null) => {
this.naviListenerArray.forEach(listener => {
if (listener.showLaneInfo) {
listener.showLaneInfo(laneInfo)
}
})
}
//隐藏车道线信息
hideLaneInfo = () => {
this.naviListenerArray.forEach(listener => {
if (listener.hideLaneInfo) {
listener.hideLaneInfo()
}
})
}
转向图标
导航过程中路口的转向图标信息,可从NaviInfo中获取,NaviInfo的获取上面已经介绍不再赘述,NaviInfo中转向图标相关的接口有2个,一个是直接获取转向图标的bitmap,另一个是获取转向图标类型的枚举值,可用于自定义转向图标的绘制。图标bitmap带有路网信息,更加直观。
转向图标对应NaviInfo中的接口:
/**
* 获取转向图标bitmap
* <p>
* 此接口可能返回为空,返回空的情况下,请使用 {@link NaviInfo#getIconType()} 来判别转向类型。请优先使用此接口来绘制转向图标。
* </p>
* 注意:<font color='red'>该接口仅驾车模式有效</font>
*
* @return 转向图标bitmap
* @since 6.4.0
*/
public getIconBitmap(): image.PixelMap | null {
return this.iconBitmap;
}
/**
* 获取导航转向图标类型
* <p>
* 注意,当 {@link NaviInfo#getIconBitmap()} 有返回值的时候,请优先使用其返回的Bitmap来绘制转向图标,这样结果更加准确。
* <p/>
*
* @return 导航转向图标类型值。参见{@link com.amap.api.navi.enums.IconType}
*/
public getIconType(): number {
return this.mIcon;
}

路况信息
路况信息涉及的接口一共有2个,一个主动接口,位于路线类AMapNaviPath中的getTrafficStatuses ,返回的是当前路线的即时路况信息,可用来绘制光柱图。另一个为被动回调,为AMapNaviListener中的onTrafficStatusUpdate,当路线上的路况发生变化时会触发回调。
AMapNaviPath中的主动接口:
/**
* 获取当前路线的交通状态
* <br>
* 注意:<font color='red'>该接口仅驾车模式有效</font>
* @return 交通状态对象集合
* @since 1.0.0
*/
public getTrafficStatuses(): ArrayList<AMapTrafficStatus> | null {
return this.trafficStatuses;
}AMapNaviListener中的被动接口:
/**
* 当前方路况光柱信息有更新时回调函数。
* 注意:<font color='red'>该接口仅驾车模式有效</font>
* @since 1.0.0
*/
onTrafficStatusUpdate?:() => void
注意:为了获取更加实时准确的路况信息,建议设置AMapNaviListener监听,在收到onTrafficStatusUpdate回调后,通过AMapNavi的getNaviPath或getNaviPaths接口拿到最新的路线对象,然后通过路线对象的getTrafficStatuses接口获取实时的路况。
电子眼信息
电子眼信息包含电子眼的类型、是否限速、经纬度坐标、当前自车位置到电子眼的距离等信息。位于AMapNaviListener中。
/**
* 导航过程中的摄像头信息回调函数
* 注意:<font color='red'>该接口仅驾车模式有效</font>
* @param infoArray 摄像头对象数组
* @since 1.0.0
*/
updateCameraInfo?:(infoArray: IAMapNaviCameraInfo[ ] | null) => void
区间测速电子眼信息
区间测速电子眼信息包含了自车位置和区间测速路段的位置关系、一些实时更新的动态信息等。
/**
* 导航过程中的区间测速信息回调函数
* 注意:<font color='red'>该接口仅驾车模式有效</font>
* @param startCameraInfo 区间测速起点信息
* @param endCameraInfo 区间测速终点信息
* @param status 具体类型可参考{@link CarEnterCameraStatus}
* @since 1.0.0
*/
updateIntervalCameraInfo?:(startCameraInfo: IAMapNaviCameraInfo| null, endCameraInfo: IAMapNaviCameraInfo | null, status: number) => void
服务区和收费站信息
服务区和收费站信息包含了服务区的类型、名称、经纬度坐标、自车位置到服务区的距离,可用于一些自定义的信息展示。
/**
* 服务区信息回调函数
* 注意:<font color='red'>该接口仅驾车模式有效</font>
* @param infoArray 服务区对象数组
* @since 1.0.0
*/
onServiceAreaUpdate?:(infoArray: IAMapServiceAreaInfo[ ] | null) => void
