骑行电动车路径规划 最后更新时间: 2021年09月06日
基本介绍
从导航SDK v8.0.0版本开始,全面支持骑行电动车路径规划和导航功能。使用骑行电动车路径规划和导航功能, AMapNavi接口
中提供了多种路径规划的方式供您使用。
特别注意:骑行电动车路径规划是收费接口,您如果申请试用或者正式应用都请通过工单系统提交商务合作类工单进行沟通,否则默认是无法算路成功的。
说明:
- 注意:路径规划功能需要联网使用。
- 起终点信息可通过多种方式获取,如:使用坐标拾取器查询您需要的点的坐标;还可以通过搜索 SDK 中的 poi 搜索查询兴趣点,作为起终点。
- 提供三种骑行路线规划的方法,如下表所示:
方法名 | 参数说明 | 返回值说明 | 方法效果 |
---|---|---|---|
calculateEleBikeRoute(NaviLatLng to) | to:终点坐标; | BOOL,表示规划路径所需条件和参数校验是否成功,不代表算路是否成功。 | 终点为经纬度的无起点骑行电动车路径规划。(内部取当前定位点作为起点) |
calculateEleBikeRoute(NaviLatLng from, NaviLatLng to) | from:起点坐标; to:终点坐标; | BOOL,表示规划路径所需条件和参数校验是否成功,不代表算路是否成功。 | 起终点为经纬度的骑行电动车路径规划。 |
calculateEleBikeRoute(NaviPoi fromPoi, NaviPoi toPoi, TravelStrategy strategy) | fromPoi:起点POI; toPoi:终点POI; strategy:路径的计算策略; | BOOL,表示规划路径所需条件和参数校验是否成功,不代表算路是否成功。 | 起终点为POI的骑行电动车路径规划。(起点可为空,内部取当前定位点作为起点) |
推荐使用 calculateEleBikeRoute(NaviPoi fromPoi, NaviPoi toPoi, TravelStrategy strategy)方法进行路径规划,SDK内部会根据 poiId 自动补全其他信息,从而规划出更合理的路线,有效减少绕路的出现。
使用说明
1. 经纬度算路
传入起、终点的经纬度信息来规划路线。
骑行电动车无起点算路示例代码:
NaviLatLng end = new NaviLatLng(39.917834, 116.397036);
// 经纬度算路
AMapNavi.getInstance(this).calculateEleBikeRoute(end);
骑行电动车算路示例代码:
// 起点信息
NaviLatLng start = new NaviLatLng(39.993308, 116.473199);
// 终点信息
NaviLatLng end = new NaviLatLng(39.917834, 116.397036);
// 经纬度算路
AMapNavi.getInstance(this).calculateEleBikeRoute(start, end);
2. POI算路
传入起、终点的POI信息来规划骑行电动车路线。
2.1 单路径规划
示例代码:
// 构造起点POI
NaviPoi start = new NaviPoi("故宫博物馆", null, "B000A8UIN8");
// 构造终点POI
NaviPoi end = new NaviPoi("北京大学", null, "B000A816R6");
// 进行骑行电动车算路
AMapNavi.getInstance(this).calculateEleBikeRoute(start, end, TravelStrategy.SINGLE);
2.2 多路径规划
示例代码:
// 构造起点POI
NaviPoi start = new NaviPoi("故宫博物馆", null, "B000A8UIN8");
// 构造终点POI
NaviPoi end = new NaviPoi("北京大学", null, "B000A816R6");
// 进行骑行电动车算路
AMapNavi.getInstance(this).calculateEleBikeRoute(start, end, TravelStrategy.MULTIPLE);
3. 处理结果
当路线规划成功后,会触发 AMapNaviListener 的 onCalculateRouteSuccess 回调,在该回调函数中,你可以获取路线对象,进行规划路线的显示:
@Override
public void onCalculateRouteSuccess(AMapCalcRouteResult routeResult) {
// 获取路线数据对象
HashMap<Integer, AMapNaviPath> naviPaths = AMapNavi.getInstance(this).getNaviPaths();
// 绘制显示路径
...
}
也可以直接开启骑行电动车导航:
@Override
public void onCalculateRouteSuccess(AMapCalcRouteResult routeResult) {
// 开启导航
AMapNavi.getInstance(this).startNavi(NaviType.GPS);
}
如果路线规划失败,则会触发 AMapNaviListener 的 onCalculateRouteFailure 回调,可以在此回调中来执行相应处理逻辑。