定位和地圖功能簡介

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;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容