骑行电动车路径规划 最后更新时间: 2021年08月05日
基本介绍
从导航SDK v8.0.0版本开始,全面支持骑行电动车路径规划和导航功能,要使用骑行电动车功能,需要使用AMapNaviEleBikeManager类。
特别注意:骑行电动车路径规划是收费接口,您如果申请试用或者正式应用都请通过工单系统提交商务合作类工单进行沟通,否则默认是无法算路成功的。
要实现骑行电动车路径规划功能,以下三个类您需要了解:
- AMapNaviEleBikeManager 是骑行电动车导航管理类,提供路线规划、行前选路、导航中重算等方法。注意:从导航SDK8.0.0开始,AMapNaviEleBikeManager 的init方法已被禁止使用,请使用单例 [AMapNaviEleBikeManager sharedInstance] 替代,且在调用类的 dealloc 函数里或其他适当时机(如导航ViewController被pop时),调用 [AMapNaviEleBikeManager destroyInstance] 来销毁单例(需要注意如未销毁成功,请检查单例是否被强引用)
- <AMapNaviRideManagerDelegate> 是骑行电动车导航管理协议类,提供算路导航过程中的事件(如:路径规划成功/失败、TTS字符串、GPS信号弱、到达目的地等)回调接口。
- <AMapNaviRideDataRepresentable> 是骑行电动车导航数据协议类,提供算路导航过程中的实时数据(如:诱导信息NaviInfo、定位信息等)回调接口。
说明:
- 注意:路径规划功能需要联网使用。
- 起终点信息可通过多种方式获取,如:使用坐标拾取器查询您需要的点的坐标;还可以通过搜索 SDK 中的 POI 搜索查询兴趣点,作为起终点。
- 提供三种骑行路线规划的方法,如下表所示:
方法名 | 参数说明 | 返回值说明 | 方法效果 |
---|---|---|---|
calculateEleBikeRouteWithEndPoint: | endPoint:终点坐标; | BOOL,表示规划路径所需条件和参数校验是否成功,不代表算路是否成功。 | 终点为经纬度的无起点骑行电动车路径规划。(内部取当前定位点作为起点 |
calculateEleBikeRouteWithStartPoint:endPoint: | startPoint:起点坐标; endPoint:终点坐标; | BOOL,表示规划路径所需条件和参数校验是否成功,不代表算路是否成功。 | 起终点为经纬度的骑行电动车路径规划。 |
calculateEleBikeRouteWithStartPOIInfo:endPOIInfo:strategy: | startPOIInfo:起点POIInfo; endPOIInfo:终点POIInfo; strategy:路径的计算策略; | BOOL,表示规划路径所需条件和参数校验是否成功,不代表算路是否成功。 | 起终点为POIInfo的骑行电动车路径规划。(起点可为空,内部取当前定位点作为起点) |
- 推荐使用 -calculateEleBikeRouteWithStartPOIInfo:endPOIInfo:strategy: 方法进行路径规划,SDK内部会根据 POIId 或者 startPOIInfo.startAngle,自动补全其他信息,从而规划出更合理的路线,有效减少绕路的出现。
使用说明
第 1 步,设置起终点信息
//使用POI初始化起终点
self.startPOIInfo = [[AMapNaviPOIInfo alloc]init];
self.startPOIInfo.mid = @"B0FFFAB6J2";
self.endPOIInfo = [[AMapNaviPOIInfo alloc]init];
self.endPOIInfo.mid = @"B0FFIA9OE8";
//使用POI初始化起终点
let startPOIInfo = AMapNaviPOIInfo.init()
startPOIInfo.mid = "B0FFFAB6J2"
let endPOIInfo = AMapNaviPOIInfo.init()
endPOIInfo.mid = "B0FFIA9OE8"
第 2 步,规划路线
//使用POI规划骑行路线
[[AMapNaviEleBikeManager sharedInstance] calculateEleBikeRouteWithStartPOIInfo:self.startPOIInfo
endPOIInfo:self.endPOIInfo
strategy:AMapNaviTravelStrategyMultipleDefault];
//使用POI规划骑行路线
AMapNaviEleBikeManager.sharedInstance().calculateEleBikeRoutecalculateRideRoute(withStart: startPOIInfo,
end: endPOIInfo,
strategy: AMapNaviTravelStrategy.multipleDefault)
第 3 步,处理结果
当骑行电动车路线规划成功时,会触发 -rideManagerOnCalculateRouteSuccess: 回调,在该回调函数中,可以进行规划路线显示,也可以直接开启导航。
- (void)rideManagerOnCalculateRouteSuccess:(AMapNaviRideManager *)rideManager
{
NSLog(@"onCalculateRouteSuccess");
//显示路径或开启导航
}
func rideManager(onCalculateRouteSuccess rideManager: AMapNaviRideManager)
{
NSLog("CalculateRouteSuccess")
//显示路径或开启导航
}