ios 地图sdk自v4.2.0版本起新增步行导航功能,支持普通步行导航、步行ar导航、偏航纠偏等导航功能。
步行导航提供给开发者监听,步行多路线规划回调、步行导航算路回调、导航状态回调、诱导信息回调、tts语音播报文本。
使用方法如下:
bmkwalknavigationmanager*manager =[bmkwalknavigationmanager sharedmanager];manager.walknavimode=bmk_walk_navigation_mode_walk_normal;manager.enablemultiroute=yes;// 设置是否支持多路线 since 6.5.4manager.routeplandelegate= self;// 设置多路线规划回调,支持关键字 since 6.5.4manager.routeguidancedelegate= self;// 设置导航状态信息回调manager.ttsplayerdelegate= self;//设置语音播报回调manager.managerdelegate= self;// 设置导航状态回调,如退出导航manager.calcroutedelegate= self;// 算路回调,只支持经纬度算路,区别于多路线规划回调 since 6.5.4manager.locationauthorizationdelegate= self;// 启用后台位置指示器,进入后台时保留被授予的临时访问权限(精确位置)[manager showsbackgroundlocationindicator:yes];
开始步行导航前,需要进行步行导航引擎初始化。
使用方法如下:
//由开发者提供导航页面walknaviviewcontroller*controller =[[walknaviviewcontroller alloc] init];//初始化bool inited =[[bmkwalknavigationmanager sharedmanager] initnaviengine:controller];if(inited){//初始化成功,发起算路...}
引擎初始化成功之后,发起导航算路。since 6.5.4版本后支持多路线路线规划,规划后用户可以选择合适的路线进行导航使用方法如下:
bmkwalknavilaunchparam*param =[[bmkwalknavilaunchparam alloc] init];param.startpoint= _startannotation.coordinate;//设置起点param.endpoint= _endannotation.coordinate;//设置终点[[bmkwalknavigationmanager sharedmanager] routeplanwithparams:param];
算路成功后,即可以执行弹出导航页面(即引擎初始化时传入的参数controller)操作,since 6.5.4版本后,可先展示多条路线,选择路线后进入导航页面。使用方法如下:
#pragma mark -bmkwalkcyclerouteplandelegate/**开始算路*/-(void)onrouteplanstart:(bmkwalkcyclenavigationtype)navitype {nslog(@"sdk-开始步行路线规划");}-(void)onrouteplanresult:(bmkwalkcyclerouteplanerrorcode)errorcode navitype:(bmkwalkcyclenavigationtype)navitype{if(errorcode ==bmk_walk_cycle_routeplan_result_success){nslog(@"sdk-算路成功");if(navitype ==bmk_walk_cycle_navigation_type_walk){[self.mapview removeoverlays:self.mapview.overlays];// 展示多路线_routepolylines =[[bmkwalknavigationmanager sharedmanager] displayrouteplanresult:_mapview];if(_routepolylines.count==1){// 只有一条时直接使用该路线进行引擎算路,成功后进入导航页面[[bmkwalknavigationmanager sharedmanager] navicalcroute:0];}}}else{nslog(@"sdk-步行路线规划失败");}}/// 自定义多路线样式-(bmkoverlayview*)mapview:(bmkmapview*)map viewforoverlay:(id<bmkoverlay>)overlay {/// 步行多路线polylineif([overlay iskindofclass:[bmkpolylineclass]]&&[bmkwalknavigationmanager sharedmanager].enablemultiroute){bmkpolylineview* polylineview =[[bmkpolylineview alloc] initwithoverlay:overlay];polylineview.linewidth=10.0;if(_isfirstroute){_isfirstroute =no;polylineview.strokecolor=[[uicolor alloc] initwithred:0green:0blue:1alpha:0.7];}else{polylineview.strokecolor=[[uicolor alloc] initwithred:0green:0blue:1alpha:0.4];}[_routepolylineviews addobject:polylineview];return polylineview;}return nil;}/// 选路-(void)mapview:(bmkmapview*)mapview onclickedbmkoverlayview:(bmkoverlayview*)overlayview {if([overlayview iskindofclass:[bmkpolylineviewclass]]){bmkoverlayview*polylineview =(bmkoverlayview*)overlayview;nsinteger idx =[_routepolylines indexofobject:polylineview.overlay];if(idx >=0&& idx < _routepolylines.count){// 按照索引路线进行导航引擎算路,算路成功后进入导航[[bmkwalknavigationmanager sharedmanager] navicalcroute:idx];for(int i =0; i < _routepolylines.count; i){bmkpolylineview*polylineview = _routepolylineviews[i];if(idx == i){polylineview.strokecolor=[[uicolor alloc] initwithred:0green:0blue:1alpha:0.7];}else{polylineview.strokecolor=[[uicolor alloc] initwithred:0green:0blue:1alpha:0.4];}}}}_routepolylines = nil;[_routepolylineviews removeallobjects];[self.mapview removeoverlays:self.mapview.overlays];}#pragma mark -<bmkwalknavicalcroutedelegate>/// 引擎算路结果-(void)onnavicalcrouteresult:(bmkwalkcyclerouteplanerrorcode)errorcode navitype:(bmkwalkcyclenavigationtype)navitype {if(errorcode ==bmk_walk_cycle_routeplan_result_success){if(navitype ==bmk_walk_cycle_navigation_type_walk){[[bmkwalknavigationmanager sharedmanager] startwalknaviwithparentcontroller:self ispush:yes];}else{[[bmkcyclenavigationmanager sharedmanager] startcyclenaviwithparentcontroller:self ispush:yes];}}else{nslog(@"sdk-引擎算路失败 %zd", errorcode);}}
步行导航和骑行导航均使用相同的代理回调,回调中参数 navitype 会告知开发者当前回调是步行导航还是骑行导航,请开发者注意区分。
bmkwalkcyclerouteplandelegate
步行导航路线规划代理类,成功后开发者可配合displayrouteplanresult展示并选择路线进行导航,算路失败发起导航无效。
@optional/**开始算路*/-(void)onrouteplanstart:(bmkwalkcyclenavigationtype)navitype;/**算路结果返回@param errorcode 错误码*/-(void)onrouteplanresult:(bmkwalkcyclerouteplanerrorcode)errorcode navitype:(bmkwalkcyclenavigationtype)navitype;
骑行、步行导航算路代理类,其中只有算路结果为成功的情况,开始骑行导航,算路失败发起导航无效。
/// 引擎算路结果/// @param errorcode 错误码-(void)onnavicalcrouteresult:(bmkwalkcyclerouteplanerrorcode)errorcode;-(void)onnavicalcrouteresult:(bmkwalkcyclerouteplanerrorcode)errorcode navitype:(bmkwalkcyclenavigationtype)navitype;
bmkwalkcyclemanagerdelegate
步行、骑行导航管理代理类,提供退出导航等回调。
bmkwalkcyclerouteguidancedelegate
步行、骑行导航诱导信息代理类,提供12个回调方法,主要包括导航开始、结束、导航过程中偏航、偏航结束、诱导信息(包含诱导默认图标、诱导类型、诱导信息、剩余距离、时间、振动回调等)。 详见 bmkwalkcyclenavigationdelegates.h 头文件。
bmkwalkcyclettsplayerdelegate
骑行、步行导航tts语音播报代理类,此组件只提供导航过程中的文本输出,不包含语音播报功能,需要自行传入对应的语音回调,形成播报功能。 建议使用百度语音识别服务sdk。下载地址:
上一篇
下一篇
本篇文章对您是否有帮助?