美文网首页
iOS----定位

iOS----定位

作者: GrayMantis | 来源:发表于2017-07-31 18:34 被阅读0次
    
    #import "ViewController.h"
    #import <CoreLocation/CoreLocation.h>
    @interface ViewController ()<CLLocationManagerDelegate>
    @property (nonatomic, strong) CLLocationManager *locationManager;
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // 需求 : 根据用户的移动距离  决定是否定位
        
        // 1.创建位置管理器
        CLLocationManager *locationManager = [[CLLocationManager alloc] init];
        self.locationManager = locationManager;
        
        // 2.请求用户授权  -->iOS8之后才有的     
        //必须要配置info.plist文件------->参见文章后面注释1
        // 无论app在前台还是后台运行,都可以定位
    //    [locationManager requestAlwaysAuthorization];
        // 只有app在前台运行时,才可以定位
        [locationManager requestWhenInUseAuthorization];
        // 3.设置代理
        locationManager.delegate = self;
        
        // 设置属性
        // 位置筛选器   单位:米    用户移动了100米后再更新定位  (调用对应的代理方法)
    //    locationManager.distanceFilter = 100;
    //    // 期望精度   单位:米      表示系统将100.3范围内当做一个位置
    //    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        
        if ([UIDevice currentDevice].systemVersion.floatValue >= 9.0) {
            // 临时开启后台定位  一定需要配置info.plist文件----->参见文章后面注释2
            locationManager.allowsBackgroundLocationUpdates = YES;
        }
        // 4.开始定位
        [locationManager startUpdatingLocation];
    //    [locationManager startUpdatingHeading];  移动方向
        [self compareDistance];
    }
    // 比较两点的距离    比较的是两点之间的直线距离
    - (void)compareDistance
    {
        // 1.北京的位置
        CLLocation *location = [[CLLocation alloc] initWithLatitude:39 longitude:115];
        
        // 2.上海的位置
        CLLocation *location1 = [[CLLocation alloc] initWithLatitude:30 longitude:120];
        
        // 比较位置  单位 米
        double distance = [location distanceFromLocation:location1];
        NSLog(@"%f",distance * 0.001);
    
    }
    /// 定位成功后调用
    /// 持续调用   耗电
    /// locations:放着CLLocation的数组
    - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations
    {
        NSLog(@"%@",locations);
         //停止定位 (省电)
        [manager stopUpdatingLocation];
    }
    @end
    
    
    • 注释1:
      请求用户授权使用定位权限
    image.png
    • 注释2
    Requeired background modes.png

    也可以用简便的可视化方法

    location update.png

    相关文章

      网友评论

          本文标题:iOS----定位

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