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这个keyword。我们通常是被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 //位置点可用
externkeyword表示在其它的类中已经用过定义了这个变量。
功能:
一、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);
一