CoreLocation:用于地理定位喂击,地理編碼剂癌,區(qū)域監(jiān)聽等(著重功能實現)
MapKit:用于地圖展示,如大頭針翰绊,路線佩谷,覆蓋層展示等(著重界面展示)
熱門專業(yè)術語
LBS:Location Based Services 基于位置的服務
SoLoMo:Social Local Mobile(索羅門) 社交化旁壮,本地化,移動化
CoreLocation框架的使用
1.導入框架(Xcode5.0之后可以省略)
2.導入頭文件
#import <CoreLocation/CoreLocation.h>
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函數來創(chuàng)建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;
//區(qū)域
@property(nonatomic,readonly)CLRegion * region;
//詳細地址信息
@property(nonatomic,readonly)NSDictionary * addressDictionary;
//地址名稱
@property(nonatomic,readonly)NSString * name;
//城市
@property(nonatomic,readonly)NSString * locality;