骑行/步行路线规划 最后更新时间: 2026年05月29日
基本介绍
导航sdk同时提供了骑行与步行场景下的路线规划与导航功能。针对骑行与步行的特点,进行场景化算法优化,规划出更为合理、便捷的路线,提供更为清晰的语音播报与导航信息反馈。
要实现骑行、步行路径规划功能,以下两个类您需要了解:
- AMapNavi :此类是导航功能管理类,提供路线规划、行前选路、导航中重算等方法。它是一个单例,通过getInstance方法获取该单例,通过destroy方法来销毁该单例。
- AMapNaviListener:此类是导航事件信息与数据协议类,提供算路导航过程中的事件(如:路径规划成功/失败、TTS字符串、GPS信号弱、到达目的地等)以及实时数据(如:诱导信息NaviInfo、定位信息、电子眼信息等)回调接口。
说明
- 注意:路径规划功能需要联网使用。
- 起终点信息可通过多种方式获取,如:使用坐标拾取器查询您需要的点的坐标;还可以通过搜索 SDK 中的 POI 搜索查询兴趣点,作为起终点。
- 骑步行算路同样支持单路径规划与多路径规划,可以通过骑步行的POI算路接口来指定 PathPlanningStrategy 枚举。
1. 经纬度算路
传入起、终点的经纬度信息来规划路线。
骑行算路示例代码:
const appKey = "您的appKey";
const naviInstance: IAMapNavi = AMapNaviFactory.getAMapNaviInstance(getContext().getApplicationContext(), appKey);
// 起点信息
let startLatlng : NaviLatLng = new NaviLatLng(39.993308, 116.473199);
// 终点信息
let end : NaviLatLng = new NaviLatLng(39.917834, 116.397036);
// 设置travelInfo
naviInstance!.setTravelInfo(new AMapTravelInfo(TransportType.Ride));
// 途径点
let wayList: ArrayList<NaviLatLng> = new ArrayList<NaviLatLng>();
// 经纬度算路
naviInstance!.calculateRideRouteLatLng(startLatlng, end, wayList);步行算路示例代码:
const appKey = "您的appKey";
const naviInstance: IAMapNavi = AMapNaviFactory.getAMapNaviInstance(getContext().getApplicationContext(), appKey);
// 起点信息
let startLatlng : NaviLatLng = new NaviLatLng(39.993308, 116.473199);
// 终点信息
let end : NaviLatLng = new NaviLatLng(39.917834, 116.397036);
//设置travelInfo
naviInstance!.setTravelInfo(new AMapTravelInfo(TransportType.Walk));
//途径点
let wayList: ArrayList<NaviLatLng> = new ArrayList<NaviLatLng>();
// 经纬度算路
naviInstance!.calculateRideRouteLatLng(startLatlng, end, wayList);2. POI算路
传入起、终点的POI信息来规划骑、步行路线。
2.1 单路径规划
示例代码:
const appKey = "您的appKey";
const naviInstance: IAMapNavi = AMapNaviFactory.getAMapNaviInstance(getContext().getApplicationContext(), appKey);
// 构造起点POI
const start = new NaviPoi("故宫博物馆", null, "B000A8UIN8");
// 构造终点POI
const end = new NaviPoi("北京大学", null, "B000A816R6");
// 设置travelInfo
naviInstance!.setTravelInfo(new AMapTravelInfo(TransportType.Ride));
// 途径点
const poiList = new ArrayList<NaviPoi>();
// 进行骑行算路
naviInstance!.calculateRideRoutePoi(start, end, PathPlanningStrategy.TRAVEL_SINGLE_DEFAULT ,poiList);2.2 多路径规划
示例代码:
const appKey = "您的appKey";
const naviInstance: IAMapNavi = AMapNaviFactory.getAMapNaviInstance(getContext().getApplicationContext(), appKey);
// 构造起点POI
const start = new NaviPoi("善各庄地铁", new NaviLatLng(40.027021,116.478391), null);
// 构造终点POI
const end = new NaviPoi("天安门广场", new NaviLatLng(39.907033, 116.39754), null);
//设置travelInfo
naviInstance!.setTravelInfo(new AMapTravelInfo(TransportType.Ride));
//途径点
const poiList = new ArrayList<NaviPoi>();
// 进行骑行算路
naviInstance!.calculateRideRoutePoi(start, end, PathPlanningStrategy.TRAVEL_MULTIPLE_DEFAULT ,poiList);3. 处理结果
当路线规划成功后,会触发 AMapNaviListener 的 onCalculateRouteSuccess 回调,在该回调函数中,你可以获取路线对象,进行规划路线的显示:
this.naviInstance?.addAMapNaviListener({
onCalculateRouteSuccess: (routeResult: IAMapCalcRouteResult | null) => {
// 获取路线数据对象
const paths: HashMap<number, AMapNaviPath> | null = this.naviInstance!.getNaviPaths();
// 绘制显示路径
...
}
})也可以直接开启骑、步行导航:
this.naviInstance?.addAMapNaviListener({
onCalculateRouteSuccess: (routeResult: IAMapCalcRouteResult | null) => {
// 开启导航
this.naviInstance!.startNavi(NaviType.GPS)
}
})如果路线规划失败,则会触发 AMapNaviListener 的 onCalculateRouteFailure 回调,可以在此回调中来执行相应处理逻辑。
骑步行导航适配问题
驾车升级自定义view看齐了组件,骑步行仍是历史实现,需要使用该接口进行历史兼容状态判断,驾车场景入参为false,骑步行场景入参为true。
this.naviInstance!.setIsNaviTravelView(true);
