百度地图其实和高德地图差不错,方法名也很像。php
1、注册开发者账号,下载百度SDKnode
注册开发者账号很简单ios
SDK下载地址:http://lbsyun.baidu.com/index.php?title=iossdk/sdkiosdev-downloadc++
2、配置环境sql
bundle identifierapi
得到AKxcode
2.1能够手动添加framework,也能够使用CocoaPods,我是手动。ide
添加测试
CoreLocation.frameworkui
QuartzCore.framework
OpenGLES.framework
SystemConfiguration.framework
CoreGraphics.framework
Security.framework
libsqlite3.0.tbd(xcode7之前为 libsqlite3.0.dylib)
CoreTelephony.framework
libstdc++.6.0.9.tbd(xcode7之前为libstdc++.6.0.9.dylib)
2.2在info.plist文件中添加
NSLocationAlwaysUsageDescription//不加有时定位会不成功
NSLocationWhenInUseUsageDescription//不加定位有时会不成功
App Transport Security Settings -- Allow Arbitrary Loads(YES);
Bundle display name 填写AK(APPKey)//会提示添加Bundle display name;
2.3千万记得在SDK里加上mapapi//会提示配置不完整,而且地图没法显示
#import "ViewController.h" #import <BaiduMapAPI_Base/BMKBaseComponent.h> #import <BaiduMapAPI_Map/BMKMapComponent.h> #import <BaiduMapAPI_Search/BMKSearchComponent.h> #import <BaiduMapAPI_Cloud/BMKCloudSearchComponent.h> #import <BaiduMapAPI_Location/BMKLocationComponent.h> #import <BaiduMapAPI_Utils/BMKUtilsComponent.h> #import <BaiduMapAPI_Radar/BMKRadarComponent.h> #import <BaiduMapAPI_Map/BMKMapView.h> #define kScreenWidth [UIScreen mainScreen].bounds.size.width #define kScreenHeight [UIScreen mainScreen].bounds.size.height @interface ViewController ()<BMKMapViewDelegate,BMKLocationServiceDelegate> { BMKMapManager *_mapManager; BMKMapView * _mapView; BMKLocationService * _loactionService; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self createMapManager]; [self createMap]; [self loaction]; } //初始化地图 - (void)createMapManager { _mapManager = [[BMKMapManager alloc]init]; BOOL result = [_mapManager start:@"应用的APPKey" generalDelegate:nil]; if (!result) { NSLog(@"manager 初始化失败"); }else { NSLog(@"manager 初始化成功"); } } //建立地图 - (void)createMap { _mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)]; [self.view addSubview:_mapView]; _mapView.delegate = self; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } //定位 - (void)loaction { _loactionService = [[BMKLocationService alloc]init]; _loactionService.delegate = self; } //处理方向改变信息 -(void)didUpdateUserHeading:(BMKUserLocation *)userLocation { } //处理坐标位置更新 -(void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation { NSLog(@"%f",userLocation.location.coordinate.latitude); } //卫星地图模式 - (IBAction)satelliteButton:(id)sender { [_mapView setMapType:BMKMapTypeSatellite]; } @end
百度导航
添加
AudioToolbox.framework
ImageIO.framework
CoreMotion.framework
CoreLocation.framework
CoreTelephony.framework
MediaPlayer.framework
AVFoundation.framework
SystemConfiguration.framework
libstdc++6.0.9.dylib
Security.framework
JavaScriptCore.framework
build
配置
#import "AppDelegate.h" #import "BNCoreServices.h" - (void)createPlito { NSString * baiduKey = [[LXJFrame readPlist:@"Confit" Type:@"plist"]objectForKey:@"baiduAppKey"][0]; [BNCoreServices_Instance initServices:baiduKey]; [BNCoreServices_Instance startServicesAsyn:nil fail:nil]; }
#import "PliotViewController.h" #import "BaiduPliotHeader.h" @interface PliotViewController ()<BNNaviRoutePlanDelegate,BNNaviUIManagerDelegate> { } //导航类型 分为真实导航和模拟导航 @property (assign, nonatomic) BN_NaviType naviType; @end @implementation PliotViewController - (void)viewDidLoad { [super viewDidLoad]; [self createPageSet]; [self createPageSet]; [self getCoordinate]; } #pragma mark - create - (void)createPliotSet { _naviType = BN_NaviTypeReal; } - (void)createPageSet { self.title = @"导航"; self.view.backgroundColor = [UIColor whiteColor]; } - (BOOL)checkServicesInited { if(![BNCoreServices_Instance isServicesInited]) { UIAlertController * alerCT = [UIAlertController alertControllerWithTitle:@"提示" message:@"引擎还没有初始化完成,请稍后再试" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction * okAction = [UIAlertAction actionWithTitle:@"我知道了" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { }]; [alerCT addAction:okAction]; return NO; } return YES; } - (void)getCoordinate { NSMutableArray * nodesArray = [[NSMutableArray alloc]init]; BNRoutePlanNode *startNode = [[BNRoutePlanNode alloc] init]; startNode.pos = [[BNPosition alloc] init]; startNode.pos.x = 113.948222; startNode.pos.y = 22.549555; startNode.pos.eType = BNCoordinate_BaiduMapSDK; [nodesArray addObject:startNode]; BNRoutePlanNode *endNode = [[BNRoutePlanNode alloc] init]; endNode.pos = [[BNPosition alloc] init]; endNode.pos.x = 114.089863; endNode.pos.y = 22.546236; endNode.pos.eType = BNCoordinate_BaiduMapSDK; [nodesArray addObject:endNode]; [BNCoreServices_RoutePlan startNaviRoutePlan:BNRoutePlanMode_Highway naviNodes:nodesArray time:nil delegete:self userInfo:nil]; } #pragma mark - BNNaviRoutePlanDelegate //算路成功回调 -(void)routePlanDidFinished:(NSDictionary *)userInfo { [LXJFrame showMessage:@"路径规划成功" showTime:1.5]; //路径规划成功,开始导航 [BNCoreServices_UI showNaviUI:_naviType delegete:self isNeedLandscape:YES]; } //算路失败回调 - (void)routePlanDidFailedWithError:(NSError *)error andUserInfo:(NSDictionary *)userInfo { [LXJFrame showMessage:@"路径规划失败" showTime:1.5]; if ([error code] == BNRoutePlanError_LocationFailed) { NSLog(@"获取地理位置失败"); } else if ([error code] == BNRoutePlanError_LocationServiceClosed) { NSLog(@"定位服务未开启"); } } //算路取消回调 -(void)routePlanDidUserCanceled:(NSDictionary*)userInfo { [LXJFrame showMessage:@"路径规划取消" showTime:1.5]; } #pragma mark - BNNaviUIManagerDelegate //退出导航回调 -(void)onExitNaviUI:(NSDictionary*)extraInfo { [LXJFrame showMessage:@"退出导航" showTime:1.5]; }
要用真机测试