首页 > 代码库 > 百度地图之定位<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>