1、首先进入http://developer.baidu.com/map/index.php下载ios版本的百度地图sdk,我此次下载的版本是BaiduMap_IOSSDK_v2.6.0。
2、合并静态库:解压下载下来的zip文件,找到BaiduMap_IOSSDK_v2.6.0_Lib文件夹,拷贝Release-iphoneos和Release-iphonesimulator文件夹放到桌面上,方便合并模拟器和真机的百度地图静态库,操作如下:
打开终端,输入:cd desktop
然后继续输入:lipo -create Release-iphoneos/libbaidumapapi.a Release-iphonesimulator/libbaidumapapi.a -output libbaidumapapi.a 会在桌面生成一个libbaidumapapi.a文件
3、拷贝BaiduMap_IOSSDK_v2.6.0_Lib文件夹里的inc文件夹以及mapapi.bundle文件和第二步中生成的libbaidumapapi.a导入到项目中去,如下所示
4、申请百度地图应用的appkey,此处唯一需要注意的是"安全码"的填写应该与我们创建工程的 “Bundle Identifier” 一致,其他东西太简单不再阐述
5、添加依赖库文件
共包含5个系统的库文件,CoreLocation.framework, SystemConfiguration.framework, Security.framework, OpenGLES.framework, QuartzCore.framework。
6、由于百度的静态包文件是由objective C++实现,因此,你的工程至少需要将一个.m文件的后缀修改为.mm这样编译器将会编译C++的源文件,此处我将appdelegate.m改成了appdelegate.mm
7、在other linker flags 中加入-all_load,如下图所示
8、非常需要注意的一点,在Xcode6中 info.plist文件中默认是没有Bundle display name的 所以你需要找到你工程下对应的info.plist文件 添加 Bundle dispay name 并设置相应的value值,这个值要与你的bundle identifier最后面的一致,如我的bundle identifier是cn.pofabs.BiaoChengMobile(百度地图申请处的安全码也应该是这个),那么我的value值是BiaoChengMobile,如下图所示
9、在appdelegate中导入BMapKit.h文件,定义内部变量
@interfaceAppDelegate ()
{
BMKMapManager *_mapManager;
}
在下面的方法中开启百度地图
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//开启百度地图
_mapManager = [[BMKMapManageralloc]init];
BOOL start = [_mapManagerstart:kBDMapKey generalDelegate:nil];
if (start) {
MyLog(@"百度地图manager开启成功!");
}
//不在General中指定启动的Main interface时需要做以下的处理
self.window = [[UIWindowalloc]initWithFrame:[UIScreenmainScreen].bounds];
UIStoryboard *stor = [UIStoryboardstoryboardWithName:@"Login"bundle:nil];
[self.windowsetRootViewController:stor.instantiateInitialViewController];
if (!self.window.isKeyWindow) {
[self.windowmakeKeyAndVisible];
}
returnYES;
}
运行结果如下所示: