注:自iOS8起,系统定位功能进行了升级,SDK为了实现最新的适配,自v2.5.0起也做了相应的修改,开发者在使用定位功能之前,需要在info.plist里添加(以下二选一,两个都添加默认使用NSLocationWhenInUseUsageDescription):
NSLocationWhenInUseUsageDescription ,允许在前台使用时获取GPS的描述
NSLocationAlwaysUsageDescription ,允许永久使用GPS的描述
定位功能可以和地图功能分离使用,单独的定位功能使用方式如下:
首先添加SDK到工程中... ...
添加头文件 #import <BaiduMapAPI_Location/BMKLocationService.h>
添加代理 BMKLocationServiceDelegate
-(void)viewDidLoad
{
//初始化BMKLocationService
_locService = [[BMKLocationService alloc]init];
_locService.delegate = self;
//启动LocationService
[_locService startUserLocationService];
}
//实现相关delegate 处理位置信息更新
//处理位置坐标更新(秒更新,如果只是需要获取一次,在定位成功后停止定位或把delegate设置成nil)
//停止定位命令如下([self.locService stopUserLocationService];)
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
{
//NSLog(@"didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);
}
//如果只需要获取当前的经纬度 那么下面2条命令可忽略
//处理方向变更信息
- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation
{
//NSLog(@"heading is %@",userLocation.heading);
}
展示定位信息的功能位于“地图和覆盖物”这个功能模块,在使用时要注意选择。核心代码如下:
//以下_mapView为BMKMapView对象
_mapView.showsUserLocation = YES;//显示定位图层
[_mapView updateLocationData:userLocation];