下面是有关CLLocationManager的定义的翻译,

 //用来设置该用户是否可以使用这个定位的服务,如果设置为no,即为不可以使用,那么程序会尝试调用其他的coreLocation API
+ (BOOL)locationServicesEnabled

 //判断当前的设备是否支持方向的请求
+ (BOOL)headingAvailable

//判断设备是否支持重要位置变化的监测
+ (BOOL)significantLocationChangeMonitoringAvailable

 //确定设备是否支持指定区域的监视。
+ (BOOL)isMonitoringAvailableForClass:(Class)regionClass

//被isMonitoringAvailableForClass替代了
+ (BOOL)regionMonitoringAvailable ;

 //被+isMonitoringAvailableForClass 和 +authorizationStatus替代了
+ (BOOL)regionMonitoringEnabled ;

 //判断设备是否支持范围,这个和支持区域有设么区别
+ (BOOL)isRangingAvailable;


 //返回应用程序当前授权的状态
+ (CLAuthorizationStatus)authorizationStatus ;

//授权状态的种类,这几种授权可以相应的去尝试
typedef NS_ENUM(int, CLAuthorizationStatus) {
    kCLAuthorizationStatusNotDetermined = 0,
    kCLAuthorizationStatusRestricted,
    kCLAuthorizationStatusDenied,
    kCLAuthorizationStatusAuthorizedAlways NS_ENUM_AVAILABLE(NA, 8_0),
    kCLAuthorizationStatusAuthorizedWhenInUse NS_ENUM_AVAILABLE(NA, 8_0),
    kCLAuthorizationStatusAuthorized NS_ENUM_DEPRECATED(10_6, NA, 2_0, 8_0, "Use kCLAuthorizationStatusAuthorizedAlways") = kCLAuthorizationStatusAuthorizedAlways
};

//定位代理
@property(assign, nonatomic) id<CLLocationManagerDelegate> delegate;

//服务是否可用,不过已经过时了,现在都是用类的方法,可以查看上在上面第一个类方法
@property(readonly, nonatomic) BOOL locationServicesEnabled;

@property(copy, nonatomic) NSString *purpose;

@property(assign, nonatomic) CLActivityType activityType;

//距离过滤器
//定义了距离移动的最小距离就可以发生的移动
@property(assign, nonatomic) CLLocationDistance distanceFilter;
eg:_locationManager.distanceFilter = 1000.0f;
由上面可以知道,距离最小为1000米

//用于设置精确度,具体了解可以看CLlocation类
@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;
extern const CLLocationAccuracy kCLLocationAccuracyBestForNavigation //这一般用于车载导航
extern const CLLocationAccuracy kCLLocationAccuracyBest;  //
extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters;
extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters;  //徒步比较合适
extern const CLLocationAccuracy kCLLocationAccuracyKilometer;
extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers;
eg:    _locationManager.desiredAccuracy = kCLLocationAccuracyBest;
即为要求的精度为最好的。

@property(assign, nonatomic) BOOL pausesLocationUpdatesAutomatically __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_6_0);

@property(readonly, nonatomic, copy) CLLocation *location;


@property(readonly, nonatomic) BOOL headingAvailable __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_3_0,__IPHONE_4_0);

@property(assign, nonatomic) CLLocationDegrees headingFilter __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);

@property(assign, nonatomic) CLDeviceOrientation headingOrientation __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0);


@property(readonly, nonatomic, copy) CLHeading *heading __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0);

@property (readonly, nonatomic) CLLocationDistance maximumRegionMonitoringDistance __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0);

@property (readonly, nonatomic, copy) NSSet *monitoredRegions __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0);

@property (readonly, nonatomic, copy) NSSet *rangedRegions __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);


- (void)requestWhenInUseAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);//使用的时候验证
- (void)requestAlwaysAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);//总是验证
//上面的两个方法就是ios8之后设置的用于验证,也就是每一次打开访问的时候,都是应该验证,才可以访问,否则有些事违法的。



//开始启动定位服务
- (void)startUpdatingLocation;

//与上面对应的停止定位服务
- (void)stopUpdatingLocation;

//开始方向的定位,好像是在汽车的陀螺仪中使用到
- (void)startUpdatingHeading;

//停止方向的定位
- (void)stopUpdatingHeading ;


- (void)dismissHeadingCalibrationDisplay;

- (void)startMonitoringSignificantLocationChanges;

- (void)stopMonitoringSignificantLocationChanges;

- (void)startMonitoringForRegion:(CLRegion *)region
                 desiredAccuracy:(CLLocationAccuracy)accuracy;

- (void)stopMonitoringForRegion:(CLRegion *)region;


- (void)startMonitoringForRegion:(CLRegion *)region ;
- (void)requestStateForRegion:(CLRegion *)region;

- (void)startRangingBeaconsInRegion:(CLBeaconRegion *)region ;
- (void)stopRangingBeaconsInRegion:(CLBeaconRegion *)region ;


- (void)allowDeferredLocationUpdatesUntilTraveled:(CLLocationDistance)distance
                      timeout:(NSTimeInterval)timeout;

- (void)disallowDeferredLocationUpdates;

+ (BOOL)deferredLocationUpdatesAvailable;

@end

上面的没有就讲解的,可以在使用到地里栅栏的时候再写了。


关于map和corelocation之间的关系:

coreLocation 用于定位  (前面,动态) 定位
MapKit  用于显示地图   (后面,静态)  占线地图
ios中的定位置的时候注意更新之后注意停止,减少内存更加少的消耗

两者结合起来用就好了,通过定位来显示特定的位置。


Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐