如何在工程中导入百度地图SDK

在http://developer.baidu.com/map/ios-mobile-apply-key.htm申请key,下载SDK for iOS

如何在工程中导入百度地图SDK_第1张图片

下载文件包中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,如图:

如何在工程中导入百度地图SDK_第2张图片

3.添加静态库路径   ""$(SRCROOT)/libs/Release$(EFFECTIVE_PLATFORM_NAME)""

如何在工程中导入百度地图SDK_第3张图片

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,问题解决

如何在工程中导入百度地图SDK_第4张图片

但是项目在64位模拟器中运行时会报错,错误如下:

参看官方模版后修改设置为:

如何在工程中导入百度地图SDK_第5张图片

注意修改 Architectures与Valid Architectures的值

百度SDK导入完成,具体使用可参看官方文档

-----------------------------------我是分割线-------------------------------------------------------

后来Xcode升级到5.1,之前做好的百度地图SDK项目运行时就会出错,把Other Linker Flags改为-ObjC,问题解决。

你可能感兴趣的:(sdk,百度地图)