ios司乘同显sdk | 百度地图api sdk-凯发k8官方旗舰厅

凯发k8官方旗舰厅-凯发app官方网站
全部服务产品
开发者频道
服务升级
登录
导航
下载开发文档

导航有两种模式,分别是轻导航和专业导航

轻导航
1. 轻导航页面

轻导航页面,首先需要添加share location事件监听,然后setroutemargin, margin主要是指路线的显示范围,设置后会在轻导航中自动设置路线全览。 接着需要添加三个页面生命周期函数,分别在视图的viewdidload, viewwillappear, viewdidappear中调用,如下:

-(void)viewdidload {
[super viewdidload];
bnaviservice_strategy.bottombuttonheight=90;
[bnaviservice_sharelocation addsharelocationlistener:self];
//先设置margin
[self setroutemargin];
//再调用viewdidload
[bnaviservice_lightnavi viewdidload:self.view];
}
-(void)viewwillappear:(bool)animated {
[superviewwillappear:animated];
[bnaviservice_lightnavi viewwillappear:self.view];
}
-(void)viewdidappear:(bool)animated {
[superviewdidappear:animated];
[bnaviservice_lightnavi viewdidappear:self.view];
}
//当订单状态变化时,需要调用
[bnaviservice_sharelocation updateorder:self.order.orderid
orderstate:self.order.orderstate];
///订单结束后,需要移除sharelocation事件监听
-(void)finiorder {
[self setorderstate:bnordderstate_finish];
[bnaviservice_sharelocation removesharelocationlistener:self];
}

sharelocation相关回调

/**
剩余时间和距离变化的消息
@param remaininfo @{@"remaindist":@(remaindist),@"remaintime":@(remaintime)}
*/
-(void)onhandleremaininfo:(nsdictionary*)remaininfo {
}
//到达终点
-(void)onhandlearrivedestination{
}
//算路失败
-(void)onhandlerouteplanfail:(nserror*)error{
//这里实现了一个简单的重试机制,算路失败后10s后重试,首汽可以自行实现
[self.rerouteplanmanager rerouteplan];
}

其中算路失败的回调demo中实现了一个10s重试的类,开发者可以自行实现。

在轻导航页面,点击导航按钮,可以调用以下接口:

其中routeplanbegin和routeplancompletion只有在进入导航时,还没算路成功才会有回调,如果进入导航时,在轻导航页面已经算路成功了,则直接进入。

__weak typeof(self) weakself = self;
bool ret =[bnaviservice_normalnavi shownormalnaviui:self delegate:self extparam:nil routeplanbegin:^{
[weakself showloading];
} routeplancompletion:^(bool success){
[weakself hideloading];
if(!success){
[weakself showalertwithtitle:@"错误"withcontent:@"算路失败"];
}
}];
if(!ret){
[self showalertwithtitle:@"错误"withcontent:@"进入导航失败"];
}

注意,如果有实现算路失败重试机制,并且要延迟算路,需要先取消延迟算路重试。

//取消重试重算路操作,如果已经在重新算路中
if(_rerouteplanmanager){
[_rerouteplanmanager cancelrerouteplan];
_rerouteplanmanager = nil;
}
专业导航
1. 导航相关接口和回调

(1)进入导航入口

/**
显示正常导航ui
@param presentingviewcontroller 把导航控制器present出来的viewcontroller
@param delegate 委托
@param params 额外参数,先预留
@param beginblock 进入导航有可能需要发起算路(在轻导航页面如果没有路线,进入导航需要发起算路),这里需要显示loading框
@param completionblock 算路结果,隐藏loading框,如果失败的话,可以给用户提示
@return 是否成功
*/
-(bool)shownormalnaviui:(uiviewcontroller*)presentingviewcontroller
delegate:(id<bnnormalnavidelegate>)delegate
extparam:(nsdictionary*)params
routeplanbegin:(dispatch_block_t)beginblock
routeplancompletion:(bnavirouteplancompletionblock)completionblock;

参数说明:

presentingviewcontroller
把导航控制器present出来的viewcontroller
delegate
委托,选传
params
额外参数,选传 @{bn_exitnavicontinuelightnavi_key:@(yes/no)}
具体的参数如下:
bn_exitnavicontinuelightnavi_key:退出导航是否继续轻导航,默认是yes,如果退出导航需要基线轻导航
可以不传
beginblock
进入导航有可能需要发起算路,这里需要显示loading框
completionblock
算路结果,隐藏loading框,如果失败的话,可以给用户提示

使用模板:

[bnaviservice_normalnavi shownormalnaviui:self delegate:self extparam:nil routeplanbegin:^{
[weakself showloading];
} routeplancompletion:^(bool success){
[weakself hideloading];
if(!success){
[weakself showalertwithtitle:@"错误"withcontent:@"算路失败"];
}
}];

(2)导航页面加载完之后的回调,可以在其中添加自定义的视图,实现在代理controller

/**
导航中控制器视图加载结束之后的回调
*/
-(void)onhandlenaviviewdidload:(uiview*)naviview;

参数说明:

naviview
导航中提供可自定义添加视图的父视图,大小为整个屏幕

(3)退出导航相关回调,实现在代理controller

/**
退出导航ui的回调
@param param 预留参数,目前传nil
*/
-(void)onhandleexitnaviui:(nsdictionary*)param;

参数说明:

param
预留参数,目前传nil
2. 导航算路相关接口和回调

(1)根据当前的算路偏好发起重算路

/**
* 适用当前的算路偏好重新算路
*/
-(void)startrecalculateroute;

使用模板:

bnaviservice_strategy.routeprefrence=bnavirouteprefrence_distless;(距离优先算路)
[bnaviservice_routeplan startrecalculateroute];

(2)单/多路线算路设置(显示多条路线还是单条路线)

/**
是否开启多路线,在算路前调用(设置订单为待服务状态前)
@param enable 是否开启
*/
-(void)enablemultiroute:(bool)enable;

参数说明:

enable
是否开启多路线算路

使用模板:

[bnaviservice_routeplan enablemultiroute:yes];

(3)算路成功回调,在bnrouteplandelegate代理内实现

/**
* 算路成功回调
*
* @param userinfo 用户信息
*/
-(void)routeplandidfinished:(nsdictionary*)userinfo;

参数说明:

userinfo
用户信息

(4)算路失败回调,在bnrouteplandelegate代理内实现

/**
* 算路失败回调
*
* @param error 失败信息
* @param userinfo 用户信息
*/
-(void)routeplandidfailedwitherror:(nserror*)error
anduserinfo:(nsdictionary*)userinfo;

参数说明:

error
失败信息
userinfo
用户信息

上一篇

路线规划

下一篇

导航相关设置

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

网站地图