使用CoreLocation定位(iOS8.0-)

Xcode5.0之后不必导入框架,但是需要用到这个框架中的类创建对象.

#import 
@interface ViewController () 
/** 位置管理者*/
@property (nonatomic, strong) CLLocationManager *LM;

成为代理

- (CLLocationManager *)LM
{
    if (!_LM) {
        _LM = [[CLLocationManager alloc]init];
        _LM.delegate = self;
  //每隔100m 定位一次
        _LM.distanceFilter = 100;
        //定位精度越高,越耗电,定位时间越长
        //定位精度100m 表示在用户所在位置100m范围内的某一点  具体哪一点并不确定
        _LM.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
    }
    return _LM;
}

开始定位

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    //开始定位 不断更新用户位置
    [self.LM startUpdatingLocation];
 //默认只能在前台获取用户位置 后台需要勾选后台模式

}

代理方法 - 更新到用户位置

#pragma mark - CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    NSLog(@"更新到用户位置");
 //拿到位置 做一些业务逻辑操作
    //停止定位
    [manager stopUpdatingLocation];

}

用户隐私的保护
在info.plist中配置NSLocationUsageDescription来说明定位的目的(Provacy-Location Usage Description)

应用程序切换到后台,不再定位,后台定位需要配置Target-Capabilities-Background Modes 将这个开关打开 并且勾选update location服务

你可能感兴趣的:(使用CoreLocation定位(iOS8.0-))