ios导航sdk | 百度地图api sdk-凯发k8官方旗舰厅

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
轻导航
下载开发文档
简述

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

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

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

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

基本使用
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;
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的应用开发

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

网站地图