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

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
基础功能
下载开发文档
初始化sdk
1. 初始化时机

导航sdk的初始化时机建议在app启动的时候进行 ,在以下回调函数里进行导航sdk的初始化:

-(bool)application:(uiapplication*)application didfinishlaunchingwithoptions:(nsdictionary*)launchoptions
2. 初始化地图sdk

导航sdk依赖地图sdk,需要先进行地图sdk的初始化。sdk初始化前需要先接受隐私权限。

详情见隐私权限。

-(void)initmapsdk {
// 地图sdk隐私权限授权
[bmkmapmanager setagreeprivacy:yes];
bmkmapmanager*mapmanager =[[bmkmapmanager alloc] init];
self.mapmanager= mapmanager;
// 如果要关注网络及授权验证事件,请设定generaldelegate参数
[self.mapmanager start:bnavi_app_keygeneraldelegate:nil];
}
3. 初始化导航sdk

导航sdk初始化前需要先接受隐私权限。详情见隐私权限。

导航sdk初始化完成后,使用sdk前需要在sdk初始化成功的回调中进行导航sdk鉴权、tts(语音播报)sdk鉴权,如果使用外部的tts进行播报,可以不进行tts sdk的鉴权。

-(void)initnavisdk {
///导航隐私授权 无授权无法使用导航
[bnaviservice setagreeprivacy:yes];
[bnaviservice_instance initnaviservice:nil success:^{
[bnaviservice_instance authorizenaviappkey:bnavi_app_key
completion:^(bool suc){
}];
[bnaviservice_instance authorizettsappid:tts_app_id
apikey:tts_api_key
secretkey:tts_secret_key
completion:^(bool suc){
}];
} fail:^{
}];
}
路线规划

sdk初始化完成后,就可以进行路径规划,代码如下:

-(void)startrouteplan {
nsmutablearray*nodesarray =[nsmutablearray array];
//起点
bnrouteplannode*startnode =[[bnrouteplannode alloc] init];
startnode.pos=[[bnposition alloc] init];
startnode.pos.x=113.948682;
startnode.pos.y=22.530758;
startnode.title= @"我的位置";
startnode.pos.etype=bncoordinate_baidumapsdk;
[nodesarray addobject:startnode];
//途经点
bnrouteplannode*vianode =[[bnrouteplannode alloc] init];
vianode.pos=[[bnposition alloc] init];
vianode.pos.x=113.980583;
vianode.pos.y=22.542891;
vianode.title= @"世界之窗";
vianode.uid= @"e41eb1fb40abb0b82fb96db2";
vianode.pos.etype=bncoordinate_baidumapsdk;
[nodesarray addobject:vianode];
//终点
bnrouteplannode*endnode =[[bnrouteplannode alloc] init];
endnode.pos=[[bnposition alloc] init];
endnode.pos.x=114.035529;
endnode.pos.y=22.615108;
endnode.title= @"深圳北站";
endnode.uid= @"6f6241e3c05ab1a093114c5e";
endnode.pos.etype=bncoordinate_baidumapsdk;
[nodesarray addobject:endnode];
//发起驾车路线规划
[bnaviservice_routeplan startnavirouteplan:bnrouteplanmode_recommend navinodes:nodesarray time:nil delegete:self userinfo:@{bnavitriptypekey:@(bn_navitypereal)}];
}

需要注意以下几点:

1、如果算路的起点是用户当前的位置,需要把路线节点的title设置为【我的位置】
2、bnrouteplannode的uid参数,如果有值的话,需要赋值,提升绑路的准确性。

路径规划成功和失败的回调如下:

/**
* 算路成功回调
*
* @param userinfo 用户信息
*/
-(void)routeplandidfinished:(nsdictionary*)userinfo;
/**
* 算路失败回调
*
* @param error 失败信息
* @param userinfo 用户信息
*/
-(void)routeplandidfailedwitherror:(nserror*)error anduserinfo:(nsdictionary*)userinfo;
发起导航

算路完成后,即可发起导航,进入导航页面。需要在算路完成回调函数里跳转导航页面:

//算路成功回调
-(void)routeplandidfinished:(nsdictionary*)userinfo
{
//路径规划成功,跳转导航页面
[bnaviservice_ui showpage:bnaviui_normalnavi delegate:self extparams:@{bnaviui_normalnavi_typekey: @(bn_navitypereal)}];
}

和进入/退出导航页面主要的回调(bnnaviuimanagerdelegate)如下:

/**
* 导航页面的调起controller
* 可不实现,默认为最上层的controller
*/
-(id)navipresentedviewcontroller;
/**
* 即将退出ui的回调
*
* @param pagetype ui类型
* @param extrainfo 额外参数
*/
-(void)willexitpage:(bnaviuitype)pagetype extrainfo:(nsdictionary*)extrainfo;
/**
* 退出ui的回调
*
* @param pagetype ui类型
* @param extrainfo 额外参数
*/
-(void)onexitpage:(bnaviuitype)pagetype extrainfo:(nsdictionary*)extrainfo;

上一篇

使用https凯发k8官方旗舰厅的解决方案

下一篇

高级功能

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

网站地图