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

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
路线结果页
下载开发文档

路线结果页可以把路线规划的信息进行展示,整个路线结果页除了底图外,其他的上层ui都是可以自定义的,开发者可以根据路线信息进行自定义开发。路线结果页相关的接口和回调在bndriverouteprotocol.h头文件中。

接口

路线结果页对外暴露的接口在bndriverouteprotocol中,具体的接口如下:

@protocol bndriverouteprotocol<nsobject>
/**
路线结果页面相关事件回调的delegate
*/
@property(nonatomic, weak) id<bndriveroutemanagerdelegate> delegate;
/**
全览路线
@param margin 需要显示的路线范围的margin
@param animated 全览是否需要动画
*/
-(void)showrouteviewall:(bnmargin)margin animated:(bool)animated;
/**
选中路线,调用该接口后,同时会高亮该路线
@param routeindex 路线序号(从0开始)
*/
-(void)selectrouteatindex:(nsuinteger)routeindex;
/**
驾车路线页即将显示,在viewwillappear中调用
@param parentview mapview的父view
*/
-(void)viewwillappear:(uiview*)parentview;
/**
驾车路线页即将消失,在viewwilldisappear中调用
@param parentview mapview的父view
*/
-(void)viewwilldisappear:(uiview*)parentview;
/*
打开定位,驾车页算路成功后需要打开定位才能显示车标
*/
-(void)startupdatelocation;
/*
关闭定位
*/
-(void)stopupdatelocation;
/*
获取当前路线信息
@return 当前路线信息 包含城市信息(cityname,citycode)
*/
-(bncarroutemodel*)getcurrentcarroutedata;
/**
销毁bndriveroutemanager相关资源
*/
-(void)destory;
@end
回调

路线结果页相关的回调如下:

@protocol bndriveroutemanagerdelegate<nsobject>
/**
用户在地图上点击了某条路线(如果需要高亮该路线,要调用selectrouteatindex:接口)
@param routeindex 路线序号(从0开始)
*/
-(void)onhandletouchrouteatindex:(nsuinteger)routeindex;
/**
回调车点
@param positioninfo 车点信息
*/
-(void)onhandleupdatecurrentcarpositioninfo:(nsdictionary*)positioninfo;
@end
使用说明

下面介绍如何自定义路线结果页,进入和退出导航需要调用的接口。详细可以参考demo工程中的drivepageviewcontroller类的实现。

1. 把导航sdk的mapview实例添加到视图控制器中

在视图控制器的viewwillappear:和viewwilldisappear:中添加底图,代码如下:

-(void)viewwillappear:(bool)animated {
[superviewwillappear:animated];
[bnaviservice_driveroute viewwillappear:self.view];
}
-(void)viewwilldisappear:(bool)animated {
[superviewwilldisappear:animated];
[bnaviservice_driveroute viewwilldisappear:self.view];
}
2. 路线规划

发起路线规划,代码如下:

-(void)startrouteplan {
[bnaviservice_routeplan startnavirouteplan:bnrouteplanmode_recommend navinodes:self.nodes time:nil delegete:self userinfo:@{bnavitriptypekey: @(self.navitye)}];
}
3. 算路成功后的处理

算路成功后,可以进行以下操作,开发者可以根据自己的实际情况进行处理:

(1)选择路线:默认选择序号为0的路线,开发者也可以选择其他的路线,选中的路线会高亮。

(2)路线全览:把路线全览到屏幕的某个区域。

(3)获取路线数据,根据路线数据刷新ui,算路成功后的数据结构参考bncarroutemodel类。

(4)开启定位,开启后才能显示车标。

具体代码如下:

-(void)routeplandidfinished:(nsdictionary*)userinfo {
//获取路线数据
bncarroutemodel*route = userinfo[bndriveroutedatakey];
nsinteger routecount = route.carroutes.count;
//路线序号从0开始,这里选择序号为1的路线
nsinteger selectindex =1< routecount ?1:0;
//选择某条路线
[bnaviservice_driveroute selectrouteatindex:selectindex];
//把路线全览到某个区域
[bnaviservice_driveroute showrouteviewall:margin animated:yes];
//刷新ui
[self updateui];
// 算路成功后需要打开定位才能显示车标
[bnaviservice_driveroute startupdatelocation];
}
4. 处理路线选择回调

用户点击底图上的某条路线后,选中的路线会高亮,同时对外有如下回调,开发者可以在该回调中处理路线高亮后的ui刷新。

/**
用户在地图上点击了某条路线(如果需要高亮该路线,要调用selectrouteatindex:接口)
@param routeindex 路线序号(从0开始)
*/
-(void)onhandletouchrouteatindex:(nsuinteger)routeindex;
5. 进入专业导航

从驾车页进入导航页前需要先停止驾车页的定位监听,然后通过发起导航跳转到导航页。

-(void)enternavipage {
[bnaviservice_driveroute stopupdatelocation];
[bnaviservice_ui showpage:bnaviui_normalnavi delegate:self extparams:@{bnaviui_normalnavi_typekey: @(self.navitye)}];
}
6. 从专业导航退出回到路线结果页

可以在以下回调中处理从专业导航中退出,回到路线结果页。具体操作包括:

(1)设置路线全览

(2)重新开启定位

(3)获取当前的路线数据,刷新ui

具体代码如下:

/**
* 即将退出ui的回调
*
* @param pagetype ui类型
* @param extrainfo 额外参数
*/
-(void)willexitpage:(bnaviuitype)pagetype extrainfo:(nsdictionary*)extrainfo {
//路线全量
[bnaviservice_driveroute showrouteviewall:margin animated:yes];
//开启定位
[bnaviservice_driveroute startupdatelocation];
//获取路线数据,刷新ui
bncarroutemodel*route =[bnaviservice_driveroute getcurrentcarroutedata];
[self updateui];
}
限行信息获取

算路完成后,可以获取到路线的限行信息,限行信息在黄条数据结构里,bncarroutedata.h头文件中,具体如下:

/// 单个小黄条数据结构
@interfacebnyellowtipsinfo:nsobject
/// 小黄条标题
@property(nonatomic, copy)nsstring*title;
@end

上一篇

摩托车路线规划

下一篇

算路准确性

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

网站地图