导航SDK支持驾车、货车、摩托车三种不同的路线规划类型,目前仅支持在线,也即需要联网才能使用。相关的接口和回调在BNRoutePlanManagerProtocol.h。这个头文件主要包含以下2点:
路线规划模块对外提供的接口,包括发起算路、获取路线节点、设置算路节点等能力。
路线规划模块对外提供的回调,包括算路成功、失败等回调。
驾车、货车、摩托车的路线规划接口如下:
//接口/*** 发起算路** @param eMode 算路方式,定义见BNRoutePlanMode* @param naviNodes 算路节点数组,起点、途经点、终点按顺序排列,节点信息为BNRoutePlanNode结构* @param naviTime 发起算路时间,用于优化算路结果,可以为nil* @param delegate 算路委托,用于回调* @param userInfo 用户需要传入的参数,货车导航算路需要传入BNaviTripTypeKey,值为BN_NaviTypeTruck* 支持传入参数:*BNaviTripTypeKey:NSNumber *, 可选,BN_NaviType类型,不传默认为驾车。*(1)货车,传@(BN_NaviTypeTruck)*(2)驾车,传@(BN_NaviTypeReal)*(3)摩托车,传@(BN_NaviTypeMoto)*/- (void)startNaviRoutePlan:(BNRoutePlanMode)eModenaviNodes:(NSArray*)naviNodestime:(BNaviCalcRouteTime*)naviTimedelegete:(id<BNNaviRoutePlanDelegate>)delegateuserInfo:(NSDictionary*)userInfo;
算路策略,也即算路接口中的eMode字段。导航SDK提供8种驾车策略,对应BNRoutePlanMode枚举。
枚举值 | 含义 | 支持的类型 |
---|---|---|
BNRoutePlanMode_Recommend | 智能推荐 | 驾车/摩托车/货车 |
BNRoutePlanMode_NoHeighWay | 不走高速 | 驾车/摩托车/货车 |
BNRoutePlanMode_LessToll | 少收费 | 驾车/摩托车 |
BNRoutePlanMode_LessJam | 躲避拥堵 | 驾车/摩托车/货车 |
BNRoutePlanMode_SaveTime | 时间优先 | 驾车/摩托车/货车 |
BNRoutePlanMode_MainRoad | 高速优先 | 驾车/摩托车/货车 |
BNRoutePlanMode_EconomicRoute | 省钱路线 | 货车 |
每一个算路节点为BNRoutePlanNode类,其中pos字段是必选字段。
以下2点需要注意:
(1)如果算路的起点是用户当前的位置,需要把路线节点的title设置为【我的位置】
(2)uid字段如果有值的话,需要赋值,提升路线的准确性。
/// 路径规划节点@interface BNRoutePlanNode : NSObject/*** 位置,经纬度信息,必选*/@property(nonatomic,strong)BNPosition* pos;/*** uid,绑路用,有uid时需传入,可提高算路准确性,可选*/@property(nonatomic,strong)NSString* uid;/*** 城市ID,可选*/@property(nonatomic,strong)NSString *cityID;/*** 描述信息(如家,公司,地图上选的点,我的位置等),可选*/@property(nonatomic,copy)NSString* title;/*** 地址信息(如上地十街十号百度大厦),可选*/@property(nonatomic,copy)NSString* address;/// 途径点偏好算路使用,普通类型算路不需要使用,可选@property(nonatomic, assign)BNRoutePlanMode routePlanMode;@end
路线规划节点的坐标类如下:
/// 位置原始坐标@interface BNPosition : NSObject/*** 经度*/@property(nonatomic,assign)double x;/*** 纬度*/@property(nonatomic,assign)double y;/*** 坐标系类型,默认是BNCoordinate_OriginalGPS*/@property(nonatomic,assign)BNCoordinate_Type eType;+ (BNPosition *)positionFromCoordinate:(CLLocationCoordinate2D)coord;@end
路线规划支持的坐标类型如下:
typedef enum{BNCoordinate_OriginalGPS = 0,/**< 从iOS系统获取的原始经纬度坐标 */BNCoordinate_BaiduMapSDK = 1,/**< 从百度地图中获取的sdk,bd09ll坐标类型 */BNCoordinate_GCJ = 2 /**国测局*/}BNCoordinate_Type;
算路接口的最后一个参数为userInfo参数,该参数是一个NSDictionary*类型,开发者可以使用该参数实现以下功能:
(1)指定本次算路的类型,具体如下:
key:BNaviTripTypeKey:NSNumber *, 可选,BN_NaviType类型,不传默认为驾车。value如下:*(1)货车,传@(BN_NaviTypeTruck)*(2)驾车,传@(BN_NaviTypeReal)*(3)摩托车,传@(BN_NaviTypeMoto)比如 @{BNaviTripTypeKey : @(BN_NaviTypeTruck)}表示货车算路。
(2)区别不同的算路,传入userInfo的参数,会在算路完成的回调里,再回传给开发者。开发者可以利用这一点区分不同的算路。
在算路之前,可以先设置车牌,再调用算路接口发起算路。可以按照如下方法设置驾车车牌信息:
- (void)setCarPlateInfo {//设置车牌号码 两种都支持 默认普通车/* 方式1 [BNaviService_Strategy syncCarNumber:@"粤B86544"];*//*方式2 [BNaviService_Strategy syncCarNumber:@"粤B86544" carType:BNTruckCarTypeCommon];*/BMCarInfoModel *carInfo = [[BMCarInfoModel alloc] init];carInfo.carNumber = @"粤B86544";carInfo.truckCarType = BNTruckCarTypeCommon;[BNaviService_Strategy syncCarModel:carInfo];}
算路成功和失败的回调如下:
/*** 算路成功回调** @param userInfo 用户信息*/- (void)routePlanDidFinished:(NSDictionary*)userInfo;/*** 算路失败回调** @param error 失败信息* @param userInfo 用户信息*/- (void)routePlanDidFailedWithError:(NSError *)error andUserInfo:(NSDictionary*)userInfo;
// 节点数组NSMutableArray *nodesArray = [[NSMutableArray alloc] init];// 起点BNRoutePlanNode *startNode = [[BNRoutePlanNode alloc] init];startNode.pos = [[BNPosition alloc] init];startNode.pos.x = 113.948222;startNode.pos.y = 22.549555;startNode.pos.eType = BNCoordinate_BaiduMapSDK;[nodesArray addObject:startNode];// 终点BNRoutePlanNode *endNode = [[BNRoutePlanNode alloc] init];endNode.pos = [[BNPosition alloc] init];endNode.pos.x = 113.940868;endNode.pos.y = 22.54647;endNode.pos.eType = BNCoordinate_BaiduMapSDK;[nodesArray addObject:endNode];
[BNaviService_RoutePlan startNaviRoutePlan:BNRoutePlanMode_Recommend naviNodes:nodesArray time:nil delegete:self userInfo:@{BNaviTripTypeKey:@(BN_NaviTypeReal)}];
当路线规划成功时,会触发- (void)routePlanDidFinished:(NSDictionary*)userInfo 回调,在该回调函数中,可以获取到路线得返回数据,也可以直接发起导航。
/*** 算路成功回调** @param userInfo 用户信息*/- (void)routePlanDidFinished:(NSDictionary*)userInfo {//进入导航页面}
上一篇
下一篇
本篇文章对您是否有帮助?