CoreLocation

导入框架(Xcode5.0之后可以省略)

导入主头文件

#import <CoreLocation/CoreLocation.h>

CoreLocation框架使用须知
CoreLocation框架中所有数据类型的前缀都是CL
CoreLocation中使用CLLocationManager对象来做用户定位

CLLocationManager的常用操作

为了严谨起见,最好在使用定位功能之前判断当前应用的定位功能是否可用
CLLocationManager有个类方法可以判断当前应用的定位功能是否可用
  + (BOOL)locationServicesEnabled;

@property(assign, nonatomic) CLLocationDistance distanceFilter;
每隔多少米定位一次

@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;
定位精确度(越精确就越耗电)

开始更新用户位置
- (void)startUpdatingLocation;

停止更新用户位置
- (void) stopUpdatingLocation;

当调用了startUpdatingLocation方法后,就开始不断地请求、刷新用户的位置,一旦请求到用户位置就会调用代理的下面方法
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;
locations参数里面装着CLLocation对象

授权相关:

相关key:

NSLocationAlwaysUsageDescription

Privacy - Location Usage Description

NSLocationWhenInUseUsageDescription

/** -------iOS8.0+定位适配-------- */
        if([[UIDevice currentDevice].systemVersion floatValue] >= 8.0){
            // 前台定位授权(默认情况下,不可以在后台获取位置, 勾选后台模式 location update, 但是 会出现蓝条)
            [_lM requestWhenInUseAuthorization];

            // 前后台定位授权(请求永久授权)
            // +authorizationStatus != kCLAuthorizationStatusNotDetermined
            // 这个方法不会有效
            // 当前的授权状态为前台授权时,此方法也会有效
//            [_lM requestAlwaysAuthorization];
        }

        // 允许后台获取用户位置(iOS9.0)
         if([[UIDevice currentDevice].systemVersion floatValue] >= 9.0)
         {
             // 一定要勾选后台模式 location updates
             _lM.allowsBackgroundLocationUpdates = YES;
         }

//        if ([_lM respondsToSelector:@selector(requestAlwaysAuthorization)])
//        {
//            [_lM requestAlwaysAuthorization];
//        }
/**
 *  授权状态发生改变时调用
 *
 *  @param manager 位置管理者
 *  @param status  状态
 */
-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
    switch (status) {
            // 用户还未决定
        case kCLAuthorizationStatusNotDetermined:
        {
            NSLog(@"用户还未决定");
            break;
        }
            // 问受限
        case kCLAuthorizationStatusRestricted:
        {
            NSLog(@"访问受限");
            break;
        }
            // 定位关闭时和对此APP授权为never时调用
        case kCLAuthorizationStatusDenied:
        {
            // 定位是否可用(是否支持定位或者定位是否开启)
            if([CLLocationManager locationServicesEnabled])
            {
                NSLog(@"定位开启,但被拒");
            }else
            {
                NSLog(@"定位关闭,不可用");
            }
//            NSLog(@"被拒");
            break;
        }
            // 获取前后台定位授权
        case kCLAuthorizationStatusAuthorizedAlways:
            //        case kCLAuthorizationStatusAuthorized: // 失效,不建议使用
        {
            NSLog(@"获取前后台定位授权");
            break;
        }
            // 获得前台定位授权
        case kCLAuthorizationStatusAuthorizedWhenInUse:
        {
            NSLog(@"获得前台定位授权");
            break;
        }
        default:
            break;
    }
}
时间: 2024-10-05 12:43:36

CoreLocation的相关文章

iOS iOS9.0 的CoreLocation定位

一.简介 iOS9.0如果当前处于前台授权状态,默认是不可以后台获取用户位置. 如果在前台授权下,让其能获取到后台定位,该怎么办 可以设置以下属性为YES,就可以继续获取后台位置,但是会出现蓝条 使用注意:必须设置对应的后台模式,勾选后台模式:location updates @property(assign,nonatomic) BOOL allowsBackgroundLocationUpdates 注意:iOS9.0 可以单次请求用户位置 - (void)requestLocation /

CoreLocation的基本使用

CoreLocation是iOS中用于定位服务的系统框架,它提供了强大的API可以让我们开发者用简洁的的代码实现强大而丰富的功能...下面就来介绍一下它的基本使用: 1.首先我们必须先导入CoreLocation框架以及对应的主头文件:#import <CoreLocation/CoreLocation.h> 2.创建CLLocationManager对象并设置代理:    self.locationM = [[CLLocationManager alloc] init];    self.l

iOS:地图:MapKit和CoreLocation

地图:MapKit和CoreLocation 简介: 现在很多的社交软件都引入了地图和定位功能,要想实现这2大功能,那就不得不学习其中的2个框架:MaKit和CoreLocation CoreLocation框架可以使用硬件设备来进行定位服务 MapKit框架能够使应用程序做一些地图展示与交互的相关功能 几乎所有的iOS设备都支持位置服务,不过在使用位置服务之前,最好检查一下可用性 手机定位的三种方式:手机基站.WIFI.GPS 添加框架: #import <MapKit/MapKit.h>

【iOS开发-109】CoreLocation框架的两个主要类CLLocationManager和CLGeoCoder介绍

CoreLocation框架主要由两个常用的类,一个是CLLocationManager,一个是CLGeoCoder. (1)CoreLocation的使用,先导入CoreLocation框架. (2)一般是利用位置管理器来操作,即CLLocationManager --开启,就是startUpdatingLocation:关闭,就是stopUpdatingLocation --可以先判断位置服务是否开启locationServicesEnabled,如果没开启,直接返回空,不操作. --iOS

iOS开发拓展篇—CoreLocation地理编码

iOS开发拓展篇—CoreLocation地理编码 一.简单说明 CLGeocoder:地理编码器,其中Geo是地理的英文单词Geography的简写. 1.使用CLGeocoder可以完成“地理编码”和“反地理编码” 地理编码:根据给定的地名,获得具体的位置信息(比如经纬度.地址的全称等) 反地理编码:根据给定的经纬度,获得具体的位置信息 (1)地理编码方法 - (void)geocodeAddressString:(NSString *)addressString completionHan

CoreLocation框架之APP定位

#import "ViewController.h" //导入CoreLocation库后导入其头文件 #import <CoreLocation/CoreLocation.h> //从iOS8开始,框架的导入也可以使用这种方式 //@import CoreLocation; @interface ViewController ()<CLLocationManagerDelegate> @property (nonatomic, strong)CLLocatio

iOS开发拓展篇—CoreLocation简单介绍

一.简介 1.在移动互联网时代,移动app能解决用户的很多生活琐事,比如 (1)导航:去任意陌生的地方 (2)周边:找餐馆.找酒店.找银行.找电影院 2.在上述应用中,都用到了地图和定位功能,在iOS开发中,要想加入这2大功能,必须基于2个框架进行开发 (1)Map Kit :用于地图展示 (2)Core Location :用于地理定位 3.两个热门专业术语 (1)LBS :Location Based Service(基于定位的服务) (2)SoLoMo :Social Local Mobi

地图定位CoreLocation框架,地理位置编码与反编码

在现代互联网时代,越来越多的应用,都用到了地图定位功能,在iOS开发中,想要加入这种功能,必须基于两个框架进行开发: 1.Map Kit:用于显示地图, 2.CoreLocation:用于显示地理位置 这里我们简单了解一下CoreLocation,用于显示地理位置,坐标信息. 一.相关类介绍 CLLocationManager.用于定位服务管理类,它能够给我们提供位置信息和高度信息,也可以监控设备进入或离开某个区域,还可以获得设备的运行方向. CLLocation.封装了位置和高度信息. CLL

[转载]iOS9 使用CoreLocation

在iOS8之前,只要 #import <CoreLocation/CoreLocation.h>引入CoreLocation.framework. @property (nonatomic, strong) CLLocationManager *locationManager; 就可以使用位置信息. 在iOS8之后,苹果对定位进行了一些修改,其中包括定位授权的方法,CLLocationManager增加了下面的两个方法: (1)始终允许访问位置信息 - (void)requestAlwaysA

iOS CoreLocation之区域监测

CoreLocation的区域监测,下图来自疯狂iOS讲义 1.引CoreLocation框架,导入头文件 #import <CoreLocation/CoreLocation.h> 2.添加定位管理为成员变量,添加延迟加载 @property (nonatomic,strong) CLLocationManager *locMgr; 1 /** 2 * 懒加载 3 */ 4 - (CLLocationManager *)locMgr 5 { 6 if (_locMgr == nil) { 7