首页 > 代码库 > 百度地图之定位<1>
百度地图之定位<1>
又是好久没有写博客了,今天不知怎么想起来就总结一下这两天对百度地图定位的使用,稍微做个总结。
第一步:登陆http://lbsyun.baidu.com/apiconsole/key注册应用,获取ak,也就是百度地图对你的应用的授权key。
注册页面如下:
记下获得的key和注册的bundle Identifier;
第二步:进入http://developer.baidu.com/map/index.php?title=iossdk/sdkiosdev-download下载最新的SDK,并获得通用的静态库文件。使用命令行 lipo -create /所在路径/Release-iphoneos/libbaidumapapi.a /所在路径/Release-iphonesimulator/libbaidumapapi.a -output /Users/你电脑的用户名/Desktop/libbaidumapapi.a
导入支持的库文件:
SystemConfiguration.framework
CoreLocation.framework
QuartzCore.framework
OpenGLES.framework
MessageUI.framework
Security.framework
libbaidumapapi.a
第三步:创建地图打开定位
由于iOS8以后,定位授权机制的改变,需要在应用中获得用户授权,所以在打开定位前需要获得用户授权;
首先,在appdelegate中这样设置如下,获得百度的授权
BMKMapManager* _mapManager; @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { _mapManager = [[BMKMapManager alloc]init]; BOOL ret = [_mapManager start:@"你注册应用时返回的key" generalDelegate:self]; if (ret) { // mapManager 创建成功 NSLog(@"manager start sucess!"); }else{ // mapManager 创建失败 NSLog(@"manager start failed!"); } return YES; }
在info.plist中增加两项如下:
尽管百度文档上说添加任意一项即可,我试过添加一项有时不显示授权页面,所以还是都添加吧
在定位之前插入如下代码
if ([[UIDevice currentDevice].systemVersion floatValue]>= 8.0) { self.locationManager = [[CLLocationManager alloc]init]; [self.locationManager requestAlwaysAuthorization]; [self.locationManager requestWhenInUseAuthorization]; }
这里对CLLocationManager采用属性,因为如果使用局部变量,授权的提示框显示后就消失,无法完成授权,其实我也不知道这是为什么,但是换成属性后就好了,如果你知道为什么还望你不吝留言指教,先谢谢了。
这样就完成了对自己的定位。后续功能待续……
百度地图之定位<1>