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

轻导航是一种轻量级的导航模式,在该模式下,整个导航过程具体表现如下

(1)播报:没有语音播报,只有部分提示音(比如过路口,超速等)

(2)路线:一直保持全览状态

(3)诱导信息:提供简易诱导、剩余时间距离等信息 在开发模式上,该模块具有很好的灵活性,整个模块只提供了一张底图,其他的上层UI可以由开发者进行定制。 具体效果图如下

light_nav1_v1.png
基本使用
1. 算路(支持驾车算路和货车算路)

使用轻导航前必须先算路,算路支持驾车和货车算路,示例代码如下:

- (void)startRoutePlan {
NSArray *nodesArray = [self getNodes];
if ([self.naviType isEqualToString:@"Truck"]) {
///货车算路,userInfo传BNaviTripTypeKey key可以设置货车导航
[BNaviService_RoutePlan startNaviRoutePlan:self.planModel naviNodes:nodesArray time:nil delegete:self userInfo:@{BNaviTripTypeKey: @(BN_NaviTypeTruck)}];
} else {
///驾车算路,userInfo不传默认为驾车算路
[BNaviService_RoutePlan startNaviRoutePlan:self.planModel naviNodes:nodesArray time:nil delegete:self userInfo:nil];
}
}
2. 算路完成后开始轻导航

算路完成后,可以在算路完成的回调里选择某条路线后,然后开始轻导航:

- (void)routePlanDidFinished:(NSDictionary *)userInfo {
BNCarRouteModel *routeModel = userInfo[BNDriveRouteDataKey];
//选择最后一条路线
NSInteger selectRouteIndex = routeModel.carRoutes.count - 1;
[BNaviService_RoutePlan selectRouteIndex:selectRouteIndex completion:^{
//选路完成后再开始轻导航
[BNaviService_LightNavi startLightNavi];
}];
}
3. 退出轻导航后,需要停止轻导航

当退出轻导航页面时,需要退出轻导航,调用如下:

[BNaviService_LightNavi stopLightNavi];
底图相关
1. 路线全览设置

轻导航过程中路线一直处于全览状态,路线在底图上的全览区域可以由开发者设置,调用如下:

/// @param insets 路线全览区域在mapview上的insets
- (void)zoomToSpan:(UIEdgeInsets)insets;
2. 自动全览

用户挪动地图后,路线处于一个非全览的状态,隔一段时间后,轻导航的路线具备自动全览的功能,时间间隔可以由开发者进行设置:

/// 自动回车位的间隔,单位为秒,默认为60秒
@property (nonatomic, assign) NSInteger autoReturnCarDuration;
3. 底图生命周期-即将显示

在底图即将显示到屏幕上的时候调用

/// 轻导航底图即将显示,在viewWillAppear中或者轻导航视图即将显示时调用
/// @param parentView mapView的父view
- (void)viewWillAppear:(UIView*)parentView;
4. 底图生命周期-即将隐藏

在底图即将在屏幕上消失的时候调用

/// 轻导航底图即将消失,在viewWillDisAppear中或者轻导航视图即将隐藏调用
/// @param parentView mapView的父view
- (void)viewWillDisAppear:(UIView*)parentView;
5. 轻导航到达终点后是否删除路线

轻导航到达终点后,底图上的路线默认隐藏并删除,如果希望能够继续显示,可以设置该值为NO。

注意:到达终点后,车标会进入车标自由状态,也即车标不会再一直绑在路线上。
/// 轻导航中到达终点后是否自动删除路线,默认是YES
@property (nonatomic, assign) BOOL deleteRouteWhenArriveDestination;
路线相关
1. 单路线和多路线轻导航

轻导航支持单路线和多路线

可以有2种方式实现单路线和多路线,所谓单路线(多路线),也即在轻导航中显示的路线是单条还是多条。

可以有2种方式实现单路线和多路线的设置:

(1)算路前设置

/// 是否开启多路线,需要在算路前设,默认YES
@property (nonatomic, assign) BOOL enableMultiRoute;
调用示例:
[BNaviService_Strategy setEnableMultiRoute:YES];

(2)算路完成后开始轻导航前设置

//是否显示多路线
- (void)showMultiRoute:(BOOL)show;
调用示例:
[BNaviService_RoutePlan showMultiRoute:NO];
2. 根据3tab选路

轻导航中的3tab如图所示(这部分的数据在回调中给出)。当用户选择某个tab时,

对应的路线需要随着高亮,可以调用如下接口高亮路线:

/// 根据返回的3tab数据序号选路
/// @param routeIndex 3tab数据BNLightRoutesModel中routesInfo数组的下标
- (void)selectRouteWithRouteDetailIndex:(NSInteger)routeIndex;
light_nav2_v1.png
3. 获取当前高亮的tab序号

如果开发者需要知道当前哪个序号的tab高亮,可以调用如下接口:

/// 获取当前3tab数据哪个高亮
- (NSInteger)getSelecRouteDetailIndex;
轻导航切换到导航

在轻导航中,点击导航按钮,切换到专业导航,需要调用SDK如下接口进行切换:

/// 从轻导航切换到专业导航(包括从驾车轻导航切换到驾车专业导航,货车轻导航切换到货车专业导航)
/// @param presentVC present专业导航页面的ViewController
/// @param naviType 切换到哪种类型的专业导航,从货车轻导航切换到货车专业导航,传@"Truck",从驾车轻导航切换到驾
车专业导航,传@"Car"
- (BOOL)switchToRealNav:(UIViewController*)presentVC withNaviType:(NSString *)naviType;
回调

在轻导航中,设置了delegate,就可以接受到轻导航中的各种事件回调。

/// BNLightNaviManager的delegate,接收事件回调
@property (weak, nonatomic) id<BNLightNaviManagerDelegate> delegate;
1. 路线相关回调

(1)路线全览区域

SDK内部有一些情况会自动进行路线全览,路线的全览区域可以由开发者实现如下回调设置。

/// sdk内部偏航时进行路线全览,会回调外部这个接口,如果没有实现,使用上一次调用的zoomToSpan:的参数,如果没有调用 过
zoomToSpan:,则为{0,0,0,0}
- (UIEdgeInsets)zoomToSpanInsets;

(2)主线变化

主线是指轻导航判断的用户当前行驶的路线(也即高亮的路线)。当用户实际行驶的路线和当前路线不一致(比如偏航),主线会自动发生变化,向开发者回调以下信息。

/// 主线变化后的回调
/// @param carRouteModel 偏航成功后的路线数据,可以从carRouteModel.tipsInfoGroup中获取限行信息
-(void)onHandleDrivingRouteChange:(BNCarRouteModel *)carRouteModel;

(3)轻导航3tab数据变化回调在轻导航中,轻导航的3tab数据变化时,有如下回调:

/// 轻导航3tab数据变化回调
/// @param model 数据model
- (void)onHandleRouteDetailChange:(BNLightRoutesModel *)model;

(4)路线点击回调

当用户点击底图上的某条路线时,会有如下回调,开发者可以根据需要高亮3tab中的某个tab。

/// 点击底图路线后的回调
/// @param routeDetailIndex BNLightRoutesModel中序号变化的回调
- (void)onHandleClickRoute:(NSInteger)routeDetailIndex;
2. 简易诱导信息、ETA信息回调

(1)简易诱导信息

简易诱导信息包含转向标类型、下一路口名称、距离下一路口距离等信息。

/// 诱导信息显示/更新的回调
/// @param simpleGuideInfo 需要显示/更新的诱导信息
-(void)onHandleSimpleGuideInfo:(BNaviSimpleGuideInfo*)simpleGuideInfo;

在路线发生变化时(比如偏航),简易诱导信息需要隐藏,有如下回调:

/// 诱导信息隐藏的回调
- (void)onHandleSimpleGuideInfoHide;

(2)ETA信息回调

一次轻导航过程中,全程剩余时间、剩余距离回调如下:

/// 剩余时间、距离更新的回调
/// @param remainInfo 剩余时间、距离的model
-(void)onHandleRemainInfo:(BNaviRemainInfo *)remainInfo;
3. 轻导航状态回调

轻导航中各种状态变化回调如下:

/// 导航中各种状态
/// @param naviStatusInfo 开始导航、导航结束
- (void)onHandleNaviStatusChange:(BNaviStatusInfo*)naviStatusInfo;

其中导航中的状态包括如下:

typedef enum _BNaviStatus_Type_Enum
{
BNaviStatus_Type_Invalid, // 无效值 - Invalid
BNaviStatus_Type_BeginNavi, // 导航开始 - start navigation
BNaviStatus_Type_BeginYaw, // 开始偏航 - start yawing
BNaviStatus_Type_RerouteEnd,// 偏航成功 - finish yawing
BNaviStatus_Type_ReRouteCarFree,// 车标自由状态
BNaviStatus_Type_End1, // 接近目的地 - near the destination
BNaviStatus_Type_End2, // 到达目的地 - reach to the destination
BNaviStatus_type_ExactGuide, //模糊引导绑定link
BnaviStatus_Type_FakeYawing, //静默偏航
}BNaviStatus_Type_Enum
4. 切换专业导航后的回调

从轻导航进入导航后,会有如下几个回调:

(1)从导航中切换回轻导航失败

如果出现失败,开发者需要重新发起算路,并开始轻导航

/// 从导航中切换回轻导航失败的回调,开发者需要重新算路并开始轻导航
- (void)onHandleSwitchToLightNaviFail;

(2)退出专业导航

如果出现失败,开发者需要重新发起算路,并开始轻导航

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

(3)专业导航ViewDidLoad

进入专业导航,当导航中的ViewController执行viewDidLoad时,会回调以下函数。

/// 专业导航中暴露出来的View
- (void)onHandleNaviViewDidLoad:(UIView*)naviView;

上一篇

货运方案

下一篇

基于Swift的应用开发

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