http://blog.csdn.net/u012496940/article/details/47405345 上一篇的連結(一個定位執行個體)
從上一篇中的執行個體了解所使用的一些元素:
CLLcation不僅表示一個位置點,同時也是表示一個當時所具有的相應的屬性和相應的一切内容,我們同樣可以繼承然後添加相應的屬性給它 ,eg:我可以增加溫度,在那一個點,因為山上的高度,不同溫度也不同,雖然可以從高度測算,但是也是一個屬性,就像 CLLocationCoordinate2D(純粹的一個位置點) 和經緯度一樣.
總結:CLLocationCoordinate2D 二維點, 多元點(點+所有的環境元素)
CLLocationCoordinate2D < CLLocaiton
*****
看到那些生僻的定義點的屬性類型的時候,這裡一般上都是都是double類型的别名
//海拔,高度
@property(readonly, nonatomic) CLLocationDistance altitude;
//水準的精确度(負數無效)
@property(readonly, nonatomic) CLLocationAccuracy horizontalAccuracy;
//垂直的精确度(負數無效)
@property(readonly, nonatomic) CLLocationAccuracy verticalAccuracy;
//航向 、路徑 取值為:0.0 ~ 359.9 真北方向表示:0.0
@property(readonly, nonatomic) CLLocationDirection course ;
//速度 m/s
@property(readonly, nonatomic) CLLocationSpeed speed ;
//時間
@property(readonly, nonatomic, copy) NSDate *timestamp;
//顯示樓層的資訊,如果當地支援的話
@property(readonly, nonatomic, copy) CLFloor *floor ;
//CLFloor中的一個屬性,顯示低第幾層樓
@property(readonly, nonatomic) NSInteger level;
//位置的描述,一般的對象都是可以調用這個屬性來顯示字元描述
@property (nonatomic, readonly, copy) NSString *description;
//設定要求的精度是多少,精度也高,所需要的時間就越小,選擇合适的是很重要。也就是一個點覆寫了多大的範圍。
//*** 這裡是用來給外部的使用的常量,因為extern這個關鍵字,我們一般是被manager來使用
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;
即為要求的精度為最好的。
extern const CLLocationDistance CLLocationDistanceMax //設定最遠的大小
extern const NSTimeInterval CLTimeIntervalMax //最大的時間間隔
extern const CLLocationCoordinate2D kCLLocationCoordinate2DInvalid //位置點可用
extern關鍵字表示在其他的類中已經用過定義了這個變量。
功能:
一、CLLocation 對象建立以及初始化的三個方法
1、//經度、緯度 初始化一個 位置(Cllocation)對象(常用)
- (instancetype)initWithLatitude:(CLLocationDegrees)latitude
longitude:(CLLocationDegrees)longitude;
//CLLocationDegrees 這個就是double類型的别名
2、//經度,緯度、高度、水準和垂直精準度、時間點 初始化一個Cllocation對象
- (instancetype)initWithCoordinate:(CLLocationCoordinate2D)coordinate
altitude:(CLLocationDistance)altitude
horizontalAccuracy:(CLLocationAccuracy)hAccuracy
verticalAccuracy:(CLLocationAccuracy)vAccuracy
timestamp:(NSDate *)timestamp;
//CLLocationCoordinate2D 就是經度和緯度的結構的體
下面是這個
//結構體,,包括經度和緯度
typedef struct {
CLLocationDegrees latitude;//緯度
CLLocationDegrees longitude;//精度
} CLLocationCoordinate2D;
@property(readonly, nonatomic) CLLocationCoordinate2D coordinate;
//結構體
//這個方法是用來設定經緯度的結構體的
CLLocationCoordinate2D CLLocationCoordinate2DMake(CLLocationDegrees latitude, CLLocationDegrees longitude);
BOOL CLLocationCoordinate2DIsValid(CLLocationCoordinate2D coord); //用來判斷相應的經緯度的結構體是否可以用
3、//經度,緯度、高度、水準和垂直精準度、時間點、航向、速度初始化一個位置對象
- (instancetype)initWithCoordinate:(CLLocationCoordinate2D)coordinate
altitude:(CLLocationDistance)altitude
horizontalAccuracy:(CLLocationAccuracy)hAccuracy
verticalAccuracy:(CLLocationAccuracy)vAccuracy
course:(CLLocationDirection)course
speed:(CLLocationSpeed)speed
timestamp:(NSDate *)timestamp
二、求距離
//用來計算距離的,新的方法,舊的可以不管了
- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_2);
一