zoukankan      html  css  js  c++  java
  • iOS8以前与iOS8使用CoreLocation定位

     
    iOS8以前使用CoreLocation定位
    1、首先定义一个全局的变量用来记录CLLocationManager对象,引入CoreLocation.framework使用#import <CoreLocation/CoreLocation.h>
    1

    @property (nonatomic, strong) CLLocationManager *locationManager;

    2、初始化CLLocationManager并开始定位
     -(CLLocationManager *)locationManager
    {
         #warning 定位服务不可用,直接返回空
      if (![CLLocationManager locationServicesEnabled]) return nil;
        
        if (!_locationManager) {
            //创建定位者
            self.locationManager = [[CLLocationManager alloc]init];
            //设置代理
            self.locationManager.delegate = self;
        }
        return _locationManager;
    }

    - (void)viewDidLoad {
    [super viewDidLoad];
        self.view.backgroundColor = [UIColor whiteColor];

        self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        self.locationManager.distanceFilter = 10;
        [self.locationManager startUpdatingLocation];

    }


    3、实现CLLocationManagerDelegate的代理方法
    (1)获取到位置数据,返回的是一个CLLocation的数组,一般使用其中的一个

    - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
    {
    CLLocation *currLocation = [locations lastObject];
    NSLog(@"经度=%f 纬度=%f 高度=%f", currLocation.coordinate.latitude, currLocation.coordinate.longitude, currLocation.altitude);
    }

    (2)获取用户位置数据失败的回调方法,在此通知用户

    - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
    {
    if ([error code] == kCLErrorDenied)
    {
    //访问被拒绝
    }
    if ([error code] == kCLErrorLocationUnknown) {
    //无法获取位置信息
    }
    }

    4、在viewWillDisappear关闭定位

    - (void)viewWillDisappear:(BOOL)animated
    {
    [super viewWillDisappear:animated];
    [_locationManager stopUpdatingLocation];
    }

    iOS8中使用CoreLocation定位
    1、在使用CoreLocation前需要调用如下函数【iOS8专用】:
    iOS8对定位进行了一些修改,其中包括定位授权的方法,CLLocationManager增加了下面的两个方法:
    (1)始终允许访问位置信息
    - (void)requestAlwaysAuthorization;
    (2)使用应用程序期间允许访问位置数据
    - (void)requestWhenInUseAuthorization;
    示例如下:


    - (void)viewDidLoad {
    [super viewDidLoad];
        self.view.backgroundColor = [UIColor whiteColor];

       
        self.locMgr.desiredAccuracy = kCLLocationAccuracyBest;
        self.locMgr.distanceFilter = 10;
           #warning 定位服务,ios8以后添加这句
        [self.locMgr requestAlwaysAuthorization];
        
        [self.locMgr startUpdatingLocation];

    }

    2、在Info.plist文件中添加如下配置:
    (1)NSLocationAlwaysUsageDescription
    (2)NSLocationWhenInUseUsageDescription
     
  • 相关阅读:
    福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队)
    第六次作业
    福大软工1816 · 第五次作业
    福大软工1816 · 第四次作业
    福大软工1816 · 第三次作业
    福大软工1816 · 第二次作业
    软工实践-团队现场编程
    qwe
    软工冲刺-Alpha 冲刺 (3/10)
    软工时间-Alpha 冲刺 (2/10)
  • 原文地址:https://www.cnblogs.com/canghaixiaoyuer/p/4503651.html
Copyright © 2011-2022 走看看