全部服务产品
开发者频道
定价
登录
导航
下载开发文档

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

轻导航
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 {
[super viewWillAppear:animated];
[BNaviService_LightNavi viewWillAppear:self.view];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear: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
用户信息

上一篇

路线规划

下一篇

导航相关设置

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