导航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字段如果有值的话,需要赋值,提升路线的准确性。
/// 路径规划节点@interfacebnrouteplannode: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
路线规划节点的坐标类如下:
/// 位置原始坐标@interfacebnposition: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 {//进入导航页面}
上一篇
下一篇
本篇文章对您是否有帮助?