ios导航sdk | 百度地图api sdk-凯发k8官方旗舰厅

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
驾车路线规划
下载开发文档
基本介绍

导航sdk支持驾车、货车、摩托车三种不同的路线规划类型,目前仅支持在线,也即需要联网才能使用。相关的接口和回调在bnrouteplanmanagerprotocol.h。这个头文件主要包含以下2点:

1、bnrouteplanmanagerprotocol

路线规划模块对外提供的接口,包括发起算路、获取路线节点、设置算路节点等能力。

2、bnnavirouteplandelegate

路线规划模块对外提供的回调,包括算路成功、失败等回调。

路线规划接口

驾车、货车、摩托车的路线规划接口如下:

//接口
/**
* 发起算路
*
* @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)emode
navinodes:(nsarray*)navinodes
time:(bnavicalcroutetime*)navitime
delegete:(id<bnnavirouteplandelegate>)delegate
userinfo:(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参数

算路接口的最后一个参数为userinfo参数,该参数是一个nsdictionary*类型,开发者可以使用该参数实现以下功能:

(1)指定本次算路的类型,具体如下:

key:
bnavitriptypekey:nsnumber*, 可选,bn_navitype类型,不传默认为驾车。
value如下:
*1)货车,传@(bn_navitypetruck)
*2)驾车,传@(bn_navitypereal)
*3)摩托车,传@(bn_navitypemoto)
比如 @{bnavitriptypekey: @(bn_navitypetruck)}表示货车算路。

(2)区别不同的算路,传入userinfo的参数,会在算路完成的回调里,再回传给开发者。开发者可以利用这一点区分不同的算路。

注意:导航sdk同时只能支持一次算路。比如发起从a->b的算路,a->b算路还没成功时,再次发起c->d的算路,则a->b的算路会被取消。
设置车牌

在算路之前,可以先设置车牌,再调用算路接口发起算路。可以按照如下方法设置驾车车牌信息:

-(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;
使用说明
1. 设置路线节点信息
// 节点数组
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];
2. 规划路线
[bnaviservice_routeplan startnavirouteplan:bnrouteplanmode_recommend navinodes:nodesarray time:nil delegete:self userinfo:@{bnavitriptypekey:@(bn_navitypereal)}];
3. 处理结果

当路线规划成功时,会触发- (void)routeplandidfinished:(nsdictionary*)userinfo 回调,在该回调函数中,可以获取到路线得返回数据,也可以直接发起导航。

/**
* 算路成功回调
*
* @param userinfo 用户信息
*/
-(void)routeplandidfinished:(nsdictionary*)userinfo {
//进入导航页面
}

上一篇

高级功能

下一篇

摩托车路线规划

本篇文章对您是否有帮助?

网站地图