导航sdk的初始化时机建议在app启动的时候进行 ,在以下回调函数里进行导航sdk的初始化:
-(bool)application:(uiapplication*)application didfinishlaunchingwithoptions:(nsdictionary*)launchoptions
导航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];}
导航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_keycompletion:^(bool suc){}];[bnaviservice_instance authorizettsappid:tts_app_idapikey:tts_api_keysecretkey:tts_secret_keycompletion:^(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)}];}
需要注意以下几点:
路径规划成功和失败的回调如下:
/*** 算路成功回调** @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;
上一篇
下一篇
本篇文章对您是否有帮助?