很多小伙伴在做項(xiàng)目中都會(huì)用到導(dǎo)航功能其弊,這一期就為大家?guī)砜焖偌蓪?dǎo)航的方法,這里使用的是百度導(dǎo)航(優(yōu)點(diǎn):集成方便算路快膀斋,不用跳轉(zhuǎn)梭伐,滿滿的套路,CV即可)仰担。
第一步:導(dǎo)入百度SDK,手動(dòng)添加依賴庫HelloWorld-3-1.png配置.plist文件
第二步appdelegate里注冊(cè)百度SDK//***百度地圖***//官網(wǎng)注冊(cè)申請(qǐng)密鑰key? ? [BNCoreServices_Instance initServices:@"lKWaL65uOvOBZ5rw50XA7Ukv5HhSVQHm"];? ? [BNCoreServices_Instance startServicesAsyn:nil fail:nil];在導(dǎo)航的控制器類里添加協(xié)議####用起點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo)計(jì)算路徑
第三步
計(jì)算導(dǎo)航路徑
#pragma mark 發(fā)起導(dǎo)航算路(起點(diǎn)和重點(diǎn)都放在這個(gè)方法里計(jì)算規(guī)劃路徑)
- (void)startCalculateNavi
{
//***節(jié)點(diǎn)數(shù)組***
NSMutableArray *nodesArray = [[NSMutableArray alloc] initWithCapacity:2];
//***起點(diǎn)***
//獲得當(dāng)前定位
CLLocation *myLocation=[BNCoreServices_Location getLastLocation];
BNRoutePlanNode *startNode=[[BNRoutePlanNode alloc] init];
startNode.pos=[[BNPosition alloc] init];
startNode.pos.x=myLocation.coordinate.longitude;
startNode.pos.y=myLocation.coordinate.latitude;
startNode.pos.eType=BNCoordinate_OriginalGPS;
//模擬定位點(diǎn)
//? ? BNRoutePlanNode *startNode = [[BNRoutePlanNode alloc] init];
//? ? startNode.pos = [[BNPosition alloc] init];
//? ? startNode.pos.x = 113.936392;
//? ? startNode.pos.y = 22.547058;
![Uploading baiduNavi_575714.gif . . .]
//? ? startNode.pos.eType = BNCoordinate_BaiduMapSDK;
//將起始點(diǎn)加入到節(jié)點(diǎn)數(shù)組中
[nodesArray addObject:startNode];
//***終點(diǎn)***
BNRoutePlanNode *endNode = [[BNRoutePlanNode alloc] init];
endNode.pos = [[BNPosition alloc] init];
endNode.pos.x = 114.077075;
endNode.pos.y = 22.543634;
endNode.pos.eType = BNCoordinate_BaiduMapSDK;
[nodesArray addObject:endNode];
//***發(fā)起路徑規(guī)劃***
[BNCoreServices_RoutePlan startNaviRoutePlan:BNRoutePlanMode_Recommend naviNodes:nodesArray time:nil delegete:self userInfo:nil];
}
計(jì)算成功后回調(diào)方法,開始導(dǎo)航
#pragma mark 算路成功回調(diào)
-(void)routePlanDidFinished:(NSDictionary *)userInfo{
NSLog(@"算路成功");
//路徑規(guī)劃成功糊识,開始導(dǎo)航
[BNCoreServices_UI showPage:BNaviUI_NormalNavi delegate:self extParams:nil];
}
路徑計(jì)算失敗回調(diào)
-(void)routePlanDidFailedWithError:(NSError *)error andUserInfo:(NSDictionary *)userInfo{
NSLog(@"導(dǎo)航失敗");
}
集成排坑指南:
1.官網(wǎng)百度導(dǎo)航SDK更新到了3.0.0,(3.0.0會(huì)有MBProgresshud等三方庫沖突問題摔蓝,如果你的項(xiàng)目中使用了這些三方庫就會(huì)報(bào)錯(cuò))赂苗,解決方法:使用百度導(dǎo)航3.02;
2.百度導(dǎo)航 TTS授權(quán)失敗贮尉,解決方法:去百度地圖官網(wǎng)申請(qǐng)成為開發(fā)者拌滋,再添加項(xiàng)目申請(qǐng)密鑰key;
3.百度導(dǎo)航SDK封裝的靜態(tài)庫單個(gè)文件就有200多M猜谚,git時(shí)最好添加到忽略文件里败砂。