CoreLocation:用于地理定位,地理編碼,區(qū)域監(jiān)聽等(著重功能實(shí)現(xiàn))
MapKit:用于地圖展示,如大頭針,路線,覆蓋層展示等(著重界面展示)
熱門專業(yè)術(shù)語
LBS:Location Based Services 基于位置的服務(wù)
SoLoMo:Social Local Mobile(索羅門) 社交化,本地化,移動化
CoreLocation框架的使用
1.導(dǎo)入框架(Xcode5.0之后可以省略)
2.導(dǎo)入頭文件
#import <CoreLocation/CoreLocation.h>
3.CoreLocation使用須知
1)CoreLocation中所有數(shù)據(jù)類型的前綴都是CL
2)CoreLocation中使用CLLocationManager對象來做用戶定位
CLLocationManager
?開始更新用戶位置
-(void)startUpdatingLocation;
?停止更新用戶位置
-(void)stopUpdatingLocation;
當(dāng)調(diào)用了startUpdatingLocation方法后,就開始不斷地請求、刷新用戶的位置,一旦請求到用戶位置就會調(diào)用代理的下面方法
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)location;
locations參數(shù)里面裝著CLLocation對象
CLLocationManager補(bǔ)充
為了謹(jǐn)慎起見,最好在使用定位功能之前判斷當(dāng)前應(yīng)用的定位功能是否可用
*CLLocationManager有個(gè)類方法可以判斷當(dāng)前應(yīng)用的定位功能是否可用
+(BOOL)locationServicrsEnabled;
@property(nonatomic,assign)CLLocationAccuracy desiredAccuracy;
定位精確度(越精確就越耗電)
CLLocation
*CLLocation用來表示某個(gè)位置的地理信息,比如經(jīng)緯度、海拔等等
//經(jīng)緯度
@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;
用以下方法可以計(jì)算2個(gè)位置之間的距離
-(CLLocationDistance)distanceFromLocation:(const CLLocation * )location;
CLLocationCoordinate2D
*CLLocationCoordinate2D是一個(gè)用來表示經(jīng)緯度的結(jié)構(gòu)體,定義如下
typedef struct{
CLLocationDegrees latitude;//經(jīng)度
CLLocationDegrees longitude;//經(jīng)度
}CLLocationCoordinate2D;
//一般用CLLocationCoordinate2DMake函數(shù)來創(chuàng)建CLLocationCoordinate2D
CLGeocoder
*使用CLGeocoder可以完成“地理編碼”和“反地理編碼”
地理編碼:根據(jù)給定的地名,獲得具體的位置信息(比如經(jīng)緯度、地址的全程等)
反地理編碼:根據(jù)給定的經(jīng)緯度,獲得具體的位置信息
地理編碼方法
- (void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionHandler;
反地理編碼方法
- (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionHandler;
CLGeocodeCompletionHandler
*當(dāng)?shù)乩?、反地理編碼完成時(shí),就會調(diào)用CLGeocodeCompletionHandler
typedef void (^CLGeocodeCompletionHandler)(NSArray *placemarks, NSError *error);
//這個(gè)block傳遞2個(gè)參數(shù)
//error:當(dāng)編碼出錯(cuò)時(shí)(比如編碼不出具體的信息)有值
//placemarks:里面裝著CLPlacemark對象
CLPlacemark
*CLPlacemark的字面意思是地標(biāo),封裝詳細(xì)的地址位置信息
//地理位置
@property(nonatomic,readonly)CLLocation * location;
//區(qū)域
@property(nonatomic,readonly)CLRegion * region;
//詳細(xì)地址信息
@property(nonatomic,readonly)NSDictionary * addressDictionary;
//地址名稱
@property(nonatomic,readonly)NSString * name;
//城市
@property(nonatomic,readonly)NSString * locality;