最近由于项目需要,需要去集成百度地图,就捣鼓了一下,中间也出现了很多问题,现把相关步骤记录下来,以供后续参考(在IOS 7上 模拟器和真机实验可行)。
实现步骤:
1,在http://lbsyun.baidu.com/apiconsole/key 申请Key。如图一:
解释:应用名称自己选择。应用类型选择“for mobile”。安全码就是这个图二所示:
图二
2,下载百度开发包,http://api.map.baidu.com/lbsapi/cloud/sdkiosdev-download.htm
3.建立一个项目,项目名为BMW(随意取的,测试用),然后加入框架:
OpenGLES.framework
Security.framework
MapKit.framework
CoreLocation.framework
QuartzCore.framework
SystemConfiguration.framework
4,由于项目需要在模拟器和真机运行,这里就需要把百度开发包中的库文件合并(设备和模拟器的.a文件),进入目录:/Users/thinkposjerry/Desktop/BaiduMap_iOSSDK_v2.1.1_All/libs,在终端输入合并命令:
lipo –create Release-iphoneos/libbaidumapapi.a Release-iphonesimulator/libbaidumapapi.a –output libbaidumapapi.a
这样就会在libs目录生成合并后的libbaidumapapi.a库。如图三
如图三
5,在Xcode项目中导入百度开发包的inc目录,mapapi.bundle文件,和刚合并的 libbaidumapapi.a库
6,ViewController的.m改成.mm
7,在XCode的Project -> Edit Active Target -> Build -> Linking -> Other Linker Flags中添加-ObjC。如图四:
如图四
8,设置静态库的链接路径,在XCode的Project -> Edit Active Target -> Build -> Search Path -> Library Search Paths中添加您的静态库目录(此目录就是存放合并后的libbaidumapapi.a文件目录),如图五:
如图五
9.在委托中.h文件中中加入#import "BMapKit.h",并声明变量BMKMapManager* mapManager;在.m委托中加入
_mapManager = [[BMKMapManager alloc]init];
// 如果要关注网络及授权验证事件,请设定 generalDelegate 参数
BOOL ret = [_mapManager start:@"你申请的key值" generalDelegate:nil];
if (!ret) {
NSLog(@"manager start failed!");
}
10.引入categate文件,NSString+MD5Addition,UIDevice+IdentifierAddition,直接加入到项目里面就可以,下载地址http://www.kuaipan.cn/file/id_30491149655344975.htm (下载地址是引用的http://qing.blog.sina.com.cn/tj/68661bd80101k4rx.html博客)
11.在viewController.mm中的viewDidLoad改为如下代码
- (void)viewDidLoad {
[super viewDidLoad];
BMKMapView* mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0, 320, 548)];
self.view = mapView;
// Do any additional setup after loading the view, typically from a nib.
}
12,运行项目即可,在此就ok了。(真机也试验了,也是可行的,这里就不截图了)。如图六:
如图六
当然,这里只是百度地图的最基本的使用。如果需要更深层的学习,请参考百度地图api。
网友评论