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
     
  • 相关阅读:
    Python_Tips[3] -> sort/sorted 排序函数
    Python_Tips[2] -> 函数延后估值及字节码分析
    Python_Tips[1] -> 利用 Python 的字典实现 Switch 功能
    Python_Tips[0] -> 关于 import
    Python与数据库[2] -> 关系对象映射/ORM[4] -> sqlalchemy 的显式 ORM 访问方式
    Python与数据库[2] -> 关系对象映射/ORM[3] -> sqlalchemy 的声明层 ORM 访问方式
    Python与数据库[2] -> 关系对象映射/ORM[2] -> 建立声明层表对象的两种方式
    JS实现网页选取截屏 保存+打印 功能(转)
    nodejs+koa2 实现一个get请求
    windwos下安装使用nginx(转)
  • 原文地址:https://www.cnblogs.com/canghaixiaoyuer/p/4503651.html
Copyright © 2011-2022 走看看