浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。


1、简述

轻导航是一种轻量级的导航模式,在该模式下,整个导航过程具体表现如下
(1)播报:没有语音播报,只有部分提示音(比如过路口,超速等)
(2)路线:一直保持全览状态
(3)诱导信息:提供简易诱导、剩余时间距离等信息 在开发模式上,该模块具有很好的灵活性,整个模块只提供了一张底图,其他的上层UI可以由开发者进行定制。 具体效果图如下 light_nav1_v1.png

2、基本使用

2.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)}];
[BNaviService_RoutePlan startNaviRoutePlan:self.planModel naviNodes:nodesArray time:nil delegete:self userInfo:nil];
    } else {

  ///驾车算路,userInfo不传默认为驾车算路
}  

2.2 算路完成后开始轻导航

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

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

2.3 退出轻导航后,需要停止轻导航

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

[BNaviService_LightNavi stopLightNavi];

3、底图相关

3.1 路线全览设置

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

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

3.2 自动全览

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

/// 自动回车位的间隔,单位为秒,默认为60秒
  @property (nonatomic, assign) NSInteger autoReturnCarDuration;

3.3 底图生命周期-即将显示

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

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

3.4 底图生命周期-即将隐藏

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

/// 轻导航底图即将消失,在viewWillDisAppear中或者轻导航视图即将隐藏调用
  /// @param parentView mapView的父view
  - (void)viewWillDisAppear:(UIView*)parentView;

3.5 轻导航到达终点后是否删除路线

轻导航到达终点后,底图上的路线默认隐藏并删除,如果希望能够继续显示,可以设置该值为NO。
注意:到达终点后,车标会进入车标自由状态,也即车标不会再一直绑在路线上。

/// 轻导航中到达终点后是否自动删除路线,默认是YES
  @property (nonatomic, assign) BOOL deleteRouteWhenArriveDestination;

4、路线相关

4.1 单路线和多路线轻导航

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

(1)算路前设置

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

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

//是否显示多路线
   - (void)showMultiRoute:(BOOL)show;
 调用示例:
   [BNaviService_RoutePlan showMultiRoute:NO];

4.2 根据3tab选路

轻导航中的3tab如图所示(这部分的数据在回调中给出)。当用户选择某个tab时,
对应的路线需要随着高亮,可以调用如下接口高亮路线:
light_nav2_v1.png

   /// 根据返回的3tab数据序号选路
   /// @param routeIndex 3tab数据BNLightRoutesModel中routesInfo数组的下标
   - (void)selectRouteWithRouteDetailIndex:(NSInteger)routeIndex;

4.3 获取当前高亮的tab序号

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

 /// 获取当前3tab数据哪个高亮
 - (NSInteger)getSelecRouteDetailIndex;

5、轻导航切换到导航

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

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

6、回调

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

  /// BNLightNaviManager的delegate,接收事件回调
  @property (weak, nonatomic) id<BNLightNaviManagerDelegate> delegate;

6.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;

6.2 简易诱导信息、ETA信息回调

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

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

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

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

(2)ETA信息回调
一次轻导航过程中,全程剩余时间、剩余距离回调如下:

  /// 剩余时间、距离更新的回调
  /// @param remainInfo 剩余时间、距离的model
  -(void)onHandleRemainInfo:(BNaviRemainInfo *)remainInfo;

6.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

6.4 切换专业导航后的回调

从轻导航进入导航后,会有如下几个回调:
(1)从导航中切换回轻导航失败
如果出现失败,开发者需要重新发起算路,并开始轻导航

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

(2)退出专业导航
如果出现失败,开发者需要重新发起算路,并开始轻导航

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

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

   /// 专业导航中暴露出来的View
   - (void)onHandleNaviViewDidLoad:(UIView*)naviView;
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消