iOS 地图SDK自V4.2.0版本起新增步行导航功能,支持普通步行导航、步行AR导航、偏航纠偏等导航功能。
步行导航提供给开发者三类监听,分别是步行导航算路回调、诱导信息回调、TTS语音播报文本。
使用方法如下:
BMKWalkNavigationManager *manager = [BMKWalkNavigationManager sharedManager]; manager.routePlanDelegate = self; //设置算路回调 manager.routeGuidanceDelegate = self; //设置导航状态信息回调 manager.ttsPlayerDelegate = self; //设置语音播报回调
let manager = BMKWalkNavigationManager.shared() manager?.routePlanDelegate = self //设置算路回调 manager?.routeGuidanceDelegate = self //设置导航状态信息回调 manager?.ttsPlayerDelegate = self //设置语音播报回调
开始步行导航前,需要进行步行导航引擎初始化。
使用方法如下:
//由开发者提供导航页面 WalkNaviViewController *controller = [[WalkNaviViewController alloc] init]; //初始化 BOOL inited = [[BMKWalkNavigationManager sharedManager] initNaviEngine:controller]; if (inited) { //初始化成功,发起算路... }
//由开发者提供导航页面 let controller = WalkNaviViewController.init() //初始化 let inited = BMKWalkNavigationManager.shared.initNaviEngine(controller) if inited { //初始化成功,发起算路... }
引擎初始化成功之后,发起导航算路。使用方法如下:
BMKWalkNaviLaunchParam *param = [[BMKWalkNaviLaunchParam alloc] init]; param.startPoint = _startAnnotation.coordinate; //设置起点 param.endPoint = _endAnnotation.coordinate; //设置终点 [[BMKWalkNavigationManager sharedManager] routePlanWithParams:param];
let param = BMKWalkNaviLaunchParam.init() param.startPoint = startAnnotation.coordinate //设置起点 param.endPoint = endAnnotation.coordinate //设置终点 BMKWalkNavigationManager.shared()?.routePlan(withParams: param)
算路成功后,即可以执行弹出导航页面(即引擎初始化时传入的参数controller)操作。使用方法如下:
#pragma mark - BMKWalkCycleRoutePlanDelegate 算路回调 //开始算路 - (void)onRoutePlanStart { NSLog(@"开始算路"); } //算路结果返回 - (void)onRoutePlanResult:(BMKWalkRoutePlanErrorCode)errorCode naviType:(BMKWalkCycleNavigationType)naviType { if (errorCode == BMKWALK_ROUTEPLAN_RESULT_SUCCESS) { NSLog(@"算路成功"); //算路成功弹出导航页面 [self.navigationController pushViewController:_controller animated:YES]; } else { NSLog(@"算路失败"); } }
//MARK:BMKWalkCycleRoutePlanDelegate 算路回调 func onRoutePlanStart(_ naviType: BMKWalkCycleNavigationType) { print("开始算路") } func onRoutePlanResult(_ errorCode: BMKWalkCycleRoutePlanErrorCode, naviType: BMKWalkCycleNavigationType) { if errorCode == BMKWalkCycleRoutePlanErrorCode.WALK_CYCLE_ROUTEPLAN_RESULT_SUCCESS { print("算路成功") //算路成功弹出导航页面 self.navigationController ?.pushViewController(_controller, animated: true) } else { NSLog("算路失败") } }
在导航页面的- (void)viewWillAppear:(BOOL)animated方法中发起步行导航。调用- (BOOL)startWalkNavi:(BMKWalkNavigationMode)navigationMode;方法,参数navigationMode为导航模式,可以直接发起普通导航,也可以直接发起AR导航,请注意选择。使用方法如下:
//初始化导航引擎时开发者提供的导航页面 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[BMKWalkNavigationManager sharedManager] startWalkNavi:BMK_WALK_NAVIGATION_MODE_WALK_NORMAL]; }
override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) BMKWalkNavigationManager.shared()?.startWalkNavi(BMKWalkNavigationMode.WALK_NAVIGATION_MODE_WALK_NORMAL) }
步行导航和骑行导航均使用相同的代理回调,回调中参数naviType会告知开发者当前回调是步行导航还是骑行导航,请开发者注意区分。
BMKWalkCycleRoutePlanDelegate
步行、骑行导航算路代理类,提供两个回调方法,分别是开始算路和算路结果返回。其中只有算路结果为成功的情况,开始步行导航,算路失败发起导航无效。
BMKWalkCycleRouteGuidanceDelegate
步行、骑行导航诱导信息代理类,提供12个回调方法,主要包括导航开始、结束,导航过程中偏航、偏航结束、诱导信息(包含诱导默认图标、诱导类型、诱导信息、剩余距离、时间、振动回调等)。 详见 BMKWalkCycleNavigationDelegates.h 头文件。
BMKWalkCycleTTSPlayerDelegate
骑行、步行导航TTS语音播报代理类,此组件只提供导航过程中的文本输出,不包含语音播报功能,需要自行传入对应的语音回调,形成播报功能。 建议使用百度语音识别服务SDK。下载地址:http://yuyin.baidu.com/asr/download