iOS定位- CoreLocation框架

作者: 初心不渝 | 来源:发表于2016-03-08 23:50 被阅读245次

    目前很多App都集成了定位这项功能,苹果自身的框架中也包含具有这种功能的框架,这就是CoreLocation框架

    和大多数框架一样,在使用前需要导入CoreLocation框架,在Xcode5以后,使用import导入即可.

    创建定位管理器

    在使用定位功能的时候,需要给控制器创建一个定位管理器,由于整个控制器都需要使用这个定位管理器,我们在这里将其声明为一个属性

    设置属性

    @property (nonatomic,strong) CLLocationManager *locationManager;

    初始化管理器

    - (CLLocationManager *)locationManager {
        if (!_locationManager) {
            _locationManager = [[CLLocationManager alloc] init];
        }
        return _locationManager;
    }
    

    设置代理,当前控制器需要遵守CLLocationManagerDelegate协议

    self.locationManager.delegate = self;

    设置定位的精确程度:

    • kCLLocationAccuracyBestForNavigation
    • kCLLocationAccuracyBest
    • kCLLocationAccuracyNearestTenMeters
    • kCLLocationAccuracyHundredMeters
    • kCLLocationAccuracyKilometer
    • kCLLocationAccuracyThreeKilometers

    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    申请授权: 在iOS8.0以后,苹果为保护用户隐私的安全性,需要开发者,手动向用户申请定位授权

    授权方式分为以下两种:

    • requestAlwaysAuthorization 前后台定位授权
    • requestWhenInUseAuthorization 前台定位授权
    if ([[UIDevice currentDevice].systemVersion doubleValue] >=8.0) {
        
            [self.locationManager requestAlwaysAuthorization];
        }
    

    注意:

    此处需要修改项目的info.plist文件,否则CLLocationManager协议方法不响应,无法回掉GPS方法,不出现获取权限提示,此处根据上一步申请的授权方式,填写响应的描述文件

    • NSLocationAlwaysUsageDescription
    • NSLocationWhenInUseDescription
    Snip20160307_5.png

    开启定位

    [self.locationManager startUpdatingLocation];

    定位管理器的代理方法

    - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations {
        
        // 获取用户位置的对象
        /**
         *  locations 是位置对象的集合,数组中最后一个对象表示当前位置的位置对象
         */
        CLLocation *location = [locations lastObject];
        
        /**
         *  CLLocationCoordinate2D 是一个结构体
            latitude  纬度
            longitude 经度
            1度 近似等于 111km
         */
        CLLocationCoordinate2D coordinate = location.coordinate;
        NSLog(@"经度=%lf   纬度=%lf ",coordinate.longitude,coordinate.latitude);
        
    }
    

    相关文章

      网友评论

        本文标题:iOS定位- CoreLocation框架

        本文链接:https://www.haomeiwen.com/subject/vibzkttx.html