在Apple开发中,尤其是移动设备开发,经常会使用Core Location Framework,这个框架可以使得iOS设备获取当前的地理位置。本文就具体到Core Location 框架中,查看其声明源码。
代表了一个可以通过(x,y,z)三维空间坐标确定磁北极位置的向量。精确的Heading(方位)定位,同时也需要时间信息(即通过空间加时间四维坐标来确定位置)
typedef double CLHeadingComponentValue;
extern const CLLocationDegrees kCLHeadingFilterNone
@property(readonly, nonatomic) CLLocationDirection magneticHeading;
@property(readonly, nonatomic) CLLocationDirection trueHeading;
@property(readonly, nonatomic) CLLocationDirection headingAccuracy;
@property(readonly, nonatomic) CLHeadingComponentValue x;
@property(readonly, nonatomic) CLHeadingComponentValue y;
@property(readonly, nonatomic) CLHeadingComponentValue z;
@property(readonly, nonatomic) NSDate *timestamp;
代表带有精度和时间信息的地理坐标。
typedef double CLLocationDegrees;
typedef double CLLocationAccuracy;
typedef double CLLocationSpeed;
typedef double CLLocationDirection;
typedef struct {
CLLocationDegrees latitude;
CLLocationDegrees longitude;
} CLLocationCoordinate2D;
typedef double CLLocationDistance;
extern const CLLocationDistance kCLDistanceFilterNone;
extern const CLLocationAccuracy kCLLocationAccuracyBestForNavigation;
extern const CLLocationAccuracy kCLLocationAccuracyBest;
extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters;
extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters;
extern const CLLocationAccuracy kCLLocationAccuracyKilometer;
extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers;
extern const CLLocationDistance CLLocationDistanceMax;
*用来指定设备支持的最长距离。
extern const NSTimeInterval CLTimeIntervalMax;
extern const CLLocationCoordinate2D kCLLocationCoordinate2DInvalid;
BOOL CLLocationCoordinate2DIsValid(CLLocationCoordinate2D coord);
CLLocationCoordinate2D CLLocationCoordinate2DMake(CLLocationDegrees latitude, CLLocationDegrees longitude);
-(id)initWithLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude;
-(id)initWithCoordinate:(CLLocationCoordinate2D)coordinate altitude:(CLLocationDistance)altitude horizontalAccuracy:(CLLocationAccuracy)hAccuracy verticalAccuracy:(CLLocationAccuracy)vAccuracy timestamp:(NSDate *)timestamp;
-(id)initWithCoordinate:(CLLocationCoordinate2D)coordinate altitude:(CLLocationDistance)altitude horizontalAccuracy:(CLLocationAccuracy)hAccuracy verticalAccuracy:(CLLocationAccuracy)vAccuracy course:(CLLocationDirection)course speed:(CLLocationSpeed)speed timestamp:(NSDate *)timestamp;
@property(readonly, nonatomic) CLLocationCoordinate2D coordinate;
@property(readonly, nonatomic) CLLocationDistance altitude;
@property(readonly, nonatomic) CLLocationAccuracy horizontalAccuracy;
@property(readonly, nonatomic) CLLocationAccuracy verticalAccuracy;
@property(readonly, nonatomic) CLLocationDirection course ;
@property(readonly, nonatomic) CLLocationSpeed speed;
@property(readonly, nonatomic) NSDate *timestamp;
-(CLLocationDistance)distanceFromLocation:(const CLLocation *)location;
定义了区域类型,但在现在的版本中,只支持圆形区域(是通过区域中心坐标和区域半径实现)。区域半径以米为单位。
-(id)initCircularRegionWithCenter:(CLLocationCoordinate2D)center radius:(CLLocationDistance)radius identifier:(NSString *)identifier;
@property (readonly, nonatomic) CLLocationCoordinate2D center ;
@property (readonly, nonatomic) CLLocationDistance radius ;
@property (readonly, nonatomic) NSString *identifier;
-(BOOL)containsCoordinate:(CLLocationCoordinate2D)coordinate ;
代表了一个地理位置上的地方信息,这些地区信息,可以是国家,州,城市和街道名称。
-(id)initWithPlacemark:(CLPlacemark *)placemark; * 使用一个地区信息来初始化。
@property (nonatomic, readonly) CLLocation *location;
@property (nonatomic, readonly) CLRegion *region;
@property (nonatomic, readonly) NSDictionary *addressDictionary;
@property (nonatomic, readonly) NSString *name; // eg. Apple Inc.
@property (nonatomic, readonly) NSString *thoroughfare; // street address, eg. 1 Infinite Loop
@property (nonatomic, readonly) NSString *subThoroughfare; // eg. 1
@property (nonatomic, readonly) NSString *locality; // city, eg. Cupertino
@property (nonatomic, readonly) NSString *subLocality; // neighborhood, common name, eg. Mission District
@property (nonatomic, readonly) NSString *administrativeArea; // state, eg. CA
@property (nonatomic, readonly) NSString *subAdministrativeArea; // county, eg. Santa Clara
@property (nonatomic, readonly) NSString *postalCode; // zip code, eg. 95014
@property (nonatomic, readonly) NSString *ISOcountryCode; // eg. US
@property (nonatomic, readonly) NSString *country; // eg. United States
@property (nonatomic, readonly) NSString *inlandWater; // eg. Lake Tahoe
@property (nonatomic, readonly) NSString *ocean; // eg. Pacific Ocean
@property (nonatomic, readonly) NSArray *areasOfInterest; // eg. Golden Gate Park
地理位置编码器。
typedef void (^CLGeocodeCompletionHandler)(NSArray *placemarks, NSError *error);
@property (nonatomic, readonly, getter=isGeocoding) BOOL geocoding;
-(void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionHandler;
-(void)geocodeAddressDictionary:(NSDictionary *)addressDictionary completionHandler:(CLGeocodeCompletionHandler)completionHandler; -(void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionHandler ; -(void)geocodeAddressString:(NSString *)addressString inRegion:(CLRegion *)region completionHandler:(CLGeocodeCompletionHandler)completionHandler;
-(void)cancelGeocode;
位置管理器,用来接入定位服务。可以参照CLLocationManager Class Reference来了解该类的功能定义。
+(BOOL)locationServicesEnabled ; * 判断用户是否启动位置服务。 * 在启动位置更新操作之前,用户应当检查该方法的返回值来查看设备的位置服务是否启动。如果位置服务没有启动,而用户又启动了位置更新操作,那么Core Location 框架将会弹出一个让用户确认是否启动位置服务的对话框。
+(BOOL)headingAvailable;
+(BOOL)significantLocationChangeMonitoringAvailable;
+(BOOL)regionMonitoringAvailable;
+(CLAuthorizationStatus)authorizationStatus ;
@property(assign, nonatomic) id delegate;
@property(assign, nonatomic) CLActivityType activityType ;
@property(assign, nonatomic) CLLocationDistance distanceFilter;
@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;
@property(assign, nonatomic) BOOL pausesLocationUpdatesAutomatically ;
@property(readonly, nonatomic) CLLocation *location;
@property(assign, nonatomic) CLLocationDegrees headingFilter ;
@property(assign, nonatomic) CLDeviceOrientation headingOrientation ;
@property(readonly, nonatomic) CLHeading *heading;
*返回最近一次的方位信息。
@property (readonly, nonatomic) CLLocationDistance maximumRegionMonitoringDistance;
@property (readonly, nonatomic) NSSet *monitoredRegions;
-(void)startUpdatingLocation;
-(void)stopUpdatingLocation;
-(void)startUpdatingHeading ;
-(void)stopUpdatingHeading ;
-(void)dismissHeadingCalibrationDisplay ;
-(void)startMonitoringSignificantLocationChanges ;
-(void)stopMonitoringSignificantLocationChanges;
-(void)stopMonitoringForRegion:(CLRegion *)region ;
-(void)startMonitoringForRegion:(CLRegion *)region ;
-(void)startMonitoringForRegion:(CLRegion *)region desiredAccuracy:(CLLocationAccuracy)accuracy ;
-(void)allowDeferredLocationUpdatesUntilTraveled:(CLLocationDistance)distance timeout:(NSTimeInterval)timeout ;
-(void)disallowDeferredLocationUpdates;
+(BOOL)deferredLocationUpdatesAvailable ;
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations ;
-(void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading ;
*告知代理,方位信息已经被位置管理器更新,如果位置管理器有使用startUpdateingHeading这个方法,则应当实现本方法。
-(BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager;
-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region ;
-(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region ;
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error;
-(void)locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *)region withError:(NSError *)error;
-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status;
-(void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region ;
-(void)locationManagerDidPauseLocationUpdates:(CLLocationManager *)manager ;
-(void)locationManagerDidResumeLocationUpdates:(CLLocationManager *)manager ;
-(void)locationManager:(CLLocationManager *)manager didFinishDeferredUpdatesWithError:(NSError *)error ;
Core Location Framework学习,布布扣,bubuko.com
原文:http://www.cnblogs.com/codings/p/3613053.html