定位和地图功能简介

CoreLocation:用于地理定位,地理编码,区域监听等(着重功能实现
MapKit:用于地图展示,如大头针,路线,覆盖层展示等(着重界面展示

热门专业术语

LBS:Location Based Services 基于位置的服务
SoLoMo:Social Local Mobile(索罗门) 社交化,本地化,移动化

CoreLocation框架的使用

1.导入框架(Xcode5.0之后可以省略)
2.导入头文件

#import 

3.CoreLocation使用须知
1)CoreLocation中所有数据类型的前缀都是CL
2)CoreLocation中使用CLLocationManager对象来做用户定位

CLLocationManager

∆开始更新用户位置

-(void)startUpdatingLocation;

∆停止更新用户位置

-(void)stopUpdatingLocation;

当调用了startUpdatingLocation方法后,就开始不断地请求、刷新用户的位置,一旦请求到用户位置就会调用代理的下面方法

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)location;

locations参数里面装着CLLocation对象

CLLocationManager补充

为了谨慎起见,最好在使用定位功能之前判断当前应用的定位功能是否可用
*CLLocationManager有个类方法可以判断当前应用的定位功能是否可用

+(BOOL)locationServicrsEnabled;

@property(nonatomic,assign)CLLocationAccuracy desiredAccuracy;

定位精确度(越精确就越耗电)

CLLocation

*CLLocation用来表示某个位置的地理信息,比如经纬度、海拔等等

//经纬度
@property(readonly, nonatomic) CLLocationCoordinate2D coordinate;
//海拔
@property(readonly, nonatomic) CLLocationDistance altitude;
//路线,航向(取值范围是0.0˚~359.9˚,0.0˚代表正北方向)
@property(readonly, nonatomic) CLLocationDirection course;
//移动速度
@property(readonly, nonatomic) CLLocationSpeed speed;

用以下方法可以计算2个位置之间的距离

-(CLLocationDistance)distanceFromLocation:(const CLLocation * )location;

CLLocationCoordinate2D

*CLLocationCoordinate2D是一个用来表示经纬度的结构体,定义如下

typedef struct{
             CLLocationDegrees latitude;//经度
             CLLocationDegrees longitude;//经度
}CLLocationCoordinate2D;
//一般用CLLocationCoordinate2DMake函数来创建CLLocationCoordinate2D

CLGeocoder

*使用CLGeocoder可以完成“地理编码”和“反地理编码”
地理编码:根据给定的地名,获得具体的位置信息(比如经纬度、地址的全程等)
反地理编码:根据给定的经纬度,获得具体的位置信息
地理编码方法

- (void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionHandler;

反地理编码方法

- (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionHandler;

CLGeocodeCompletionHandler

*当地理、反地理编码完成时,就会调用CLGeocodeCompletionHandler

typedef void (^CLGeocodeCompletionHandler)(NSArray *placemarks, NSError *error);
//这个block传递2个参数
//error:当编码出错时(比如编码不出具体的信息)有值
//placemarks:里面装着CLPlacemark对象

CLPlacemark

*CLPlacemark的字面意思是地标,封装详细的地址位置信息

//地理位置
@property(nonatomic,readonly)CLLocation * location;
//区域
@property(nonatomic,readonly)CLRegion * region;
//详细地址信息
@property(nonatomic,readonly)NSDictionary * addressDictionary;
//地址名称
@property(nonatomic,readonly)NSString * name;
//城市
@property(nonatomic,readonly)NSString * locality;

你可能感兴趣的:(定位和地图功能简介)