Core Location 框架让你们确定当前的定位或者设备的朝向,这个框架使用可用的硬件来决定用户的位置和朝向。你们使用这个框架中的类群和协议来配置和计划定位和指向事件的传送。你们也能用它来定义地理区域并且监控何时用户穿过区域的边界。在iOS中,你也能定义一个区域通过Bluetooth beacon。
CLBeacon:NSObject CLBeacon代表一个信号灯,在区域监控中用到。
CLFloor:NSObject CLFloor 指定用户定位在一个建筑的楼层。
CLGeocoder:NSObject CLGeocoder提供服务来转换坐标(指定一个经度和纬度)和对用户友好的呈现通过坐标。
CLHeading:NSObject CLHeading包括指向数据,通过CLLocationManager 对象来产生。
CLLocation:NSObject CLLocation代表定位数据,通过CLLocationManager对象来产生。
CLLocationManager:NSObject CLLocationManager是配置来自于你的App的定位和指向事件的传送的中央管理器。
CLPlacemark:NSObject CLPlacemark 储存地标数据来自一个指定的经度和纬度。
CLRegion:NSObject CLRegion定义一个抽象的区域可以用来追踪。
CLBeaconRegion:CLRegion CLBeaconRegion对象定义一种类型的区域基于设备的接近通过Bluetooth beacon技术,与地理定位相反。
CLCircularRegion:CLRegion CLCircularRegion定义圆形地理区域的位置和边界。
CLVisit:NSObject CLVisit 对象压缩关于用户到过的兴趣点的信息。
CLLocationManagerDelegate CLLocationManagerDelegate 协议定义用来接收来自于CLLocationManger的定位和指向更新的方法。
按功能主要分为几个类群:
1.定位指向类(常用):CLLocationManager,CLLocation,CLHeading
2.地理编码类(常用):CLGeocoder
3.地标类(常用):CLPlacemark
4.区域类(少用):CLRegion,CLCircularRegion
5.楼层类(几乎不用):CLFloor
6.兴趣点类(几乎不用):CLVisit
7.beacon类(几乎不用):CLBeacon,CLBeaconRegion
CLLocationManager
类方法 |
说明 |
+ (BOOL)locationServicesEnabled; |
是否启用定位服务,通常如果用户没有启用定位服务可以提示用户打开定位服务 |
+ (CLAuthorizationStatus)authorizationStatus; |
定位服务授权状态,返回枚举类型: kCLAuthorizationStatusNotDetermined: 用户尚未做出决定是否启用定位服务 kCLAuthorizationStatusRestricted: 没有获得用户授权使用定位服务,可能用户没有自己禁止访问授权 kCLAuthorizationStatusDenied :用户已经明确禁止应用使用定位服务或者当前系统定位服务处于关闭状态 kCLAuthorizationStatusAuthorizedAlways: 应用获得授权可以一直使用定位服务,即使应用不在使用状态 kCLAuthorizationStatusAuthorizedWhenInUse: 使用此应用过程中允许访问定位服务 |
属性 |
说明 |
desiredAccuracy |
定位精度,枚举类型: kCLLocationAccuracyBest:最精确定位 CLLocationAccuracy kCLLocationAccuracyNearestTenMeters:十米误差范围 kCLLocationAccuracyHundredMeters:百米误差范围 kCLLocationAccuracyKilometer:千米误差范围 kCLLocationAccuracyThreeKilometers:三千米误差范围 |
distanceFilter |
位置信息更新最小距离,只有移动大于这个距离才更新位置信息,默认为kCLDistanceFilterNone:不进行距离限制 |
对象方法 |
说明 |
startUpdatingLocation |
开始定位追踪,开始定位后将按照用户设置的更新频率执行-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;方法反馈定位信息 |
stopUpdatingLocation |
停止定位追踪 |
startUpdatingHeading |
开始导航方向追踪 |
stopUpdatingHeading |
停止导航方向追踪 |
startMonitoringForRegion: |
开始对某个区域进行定位追踪,开始对某个区域进行定位后。如果用户进入或者走出某个区域会调用- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region和- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region代理方法反馈相关信息 |
stopMonitoringForRegion: |
停止对某个区域进行定位追踪 |
requestWhenInUseAuthorization |
请求获得应用使用时的定位服务授权,注意使用此方法前在要在info.plist中配置NSLocationWhenInUseUsageDescription |
requestAlwaysAuthorization |
请求获得应用一直使用定位服务授权,注意使用此方法前要在info.plist中配置NSLocationAlwaysUsageDescription |
代理方法 |
说明 |
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations; |
位置发生改变后执行(第一次定位到某个位置之后也会执行) |
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading; |
导航方向发生变化后执行 |
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region |
进入某个区域之后执行 |
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region |
走出某个区域之后执行 |