在http://developer.baidu.com/map/ios-mobile-apply-key.htm申请key,下载SDK for iOS
下载文件包中BaiduMap_iOSSDK_v2.1.1_Docs为方法使用指南,BaiduMap_iOSSDK_v2.1.1_Sample为官方例子,BaiduMap_iOSSDK_v2.1.1_Lib为库文件(见上图)。打开库文件文件夹,inc为头文件夹,libs为静态库文件,一个是真机,一个是模拟器, mapapi.bundle为资源文件,里面有图片,readme.txt为解析文档。
1.把上图的inc文件夹、libs文件夹与mapapi.bundle也拖拽至工程中,并把它们拷贝到项目的根目录下。
2. 在XCode工程中引入CoreLocation.framework和QuartzCore.framework、OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework,如图:
3.添加静态库路径 ""$(SRCROOT)/libs/Release$(EFFECTIVE_PLATFORM_NAME)""
4.在需要使用百度地图API的文件加入头文件import "BMapKit.h"
在AppDelegate.h文件中 添加BMKMapManager的定义
@interface AppDelegate : UIResponder<UIApplicationDelegate>{ UINavigationController *navigationController; BMKMapManager* _mapManager; }
在AppDelegate.m文件中添加对BMKMapManager的初始化,并填入您申请的授权Key
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 要使用百度地图,先启动BaiduMapManager _mapManager = [[BMKMapManager alloc]init]; // 如果要关注网络及授权验证事件,请设定 generalDelegate参数 BOOL ret = [_mapManager start:@"在此处输入您的授权Key" generalDelegate:nil]; if (!ret) { NSLog(@"manager start failed!"); } // Add the navigation controller's view to the window and display. [self.window addSubview:navigationController.view]; [self.window makeKeyAndVisible]; return YES; }
在ViewController.m文件中创建BMKMapView
- (void)viewDidLoad { [super viewDidLoad]; BMKMapView* mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)]; self.view = mapView; }
静态库采用object-c++实现,所以要把程序中任意一个.m文件的后缀改成.mm,xcode检测到object-c++文件会自动以objc++为编译方式。
在真机下(iPhone4)会提示unrecognized selector sent toinstance……错误,从TARGETS->BuildSettings->Linking->OtherLinker Flags双击键入-all-load,问题解决
但是项目在64位模拟器中运行时会报错,错误如下:
参看官方模版后修改设置为:
注意修改 Architectures与Valid Architectures的值
百度SDK导入完成,具体使用可参看官方文档
-----------------------------------我是分割线-------------------------------------------------------
后来Xcode升级到5.1,之前做好的百度地图SDK项目运行时就会出错,把Other Linker Flags改为-ObjC,问题解决。