iOS - 定位、地理編碼、反地理編碼

#pragma mark---*定位:

一、介紹

1、定位使用CoreLocation框架

2、功能:(1)基礎(chǔ)定位-所在位置的信息(2)地理編碼-把地名轉(zhuǎn)換成地理位置、反編碼-把地理位置轉(zhuǎn)換成地名

3、IOS8、IOS9之后的變化

-IOS8:只有使用定位服務才向用戶請求

(1)添加了定位服務的目的寫在Info.plist里面-添加以下

《1》NSLocationAlwaysUsageDescription一直使用

《2》NSLocationWhenInUseUsageDescription當使用時

《3》如果忘記寫就不能使用定位功能、沒有提示信息

(2)得請求用戶授權(quán)在代碼里面添加請求

《1》requestAlwaysAuthorization

《2》requestWhenInUseAuthorization

《3》如果和描述的目的不匹配,也不能使用定位功能

-IOS9:

(1)按Home鍵進入后臺如果需要繼續(xù)定位

《1》需要在Info.plist文件里面添加Required

background modes -> App registers for location updates如果不添加這對鍵值卻使用;后臺定位功能會直接崩潰

《2》在代碼里面需要添加屬性allowsBackgroundLocationUpdates需要同時設置成YES

//獲得系統(tǒng)的版本

if ([[UIDevice

currentDevice].systemVersionfloatValue]

>= 8.0) {

}

二、使用

1、使用定位服務所需要的相關(guān)類和所需要的其他數(shù)據(jù)類型

(1)CLLocationManager定位的管理者,通過它創(chuàng)建定位服務的功能

//設置多少米去更新一次位置信息

locationManager.distanceFilter= 100;

//設置定位的精準度

locationManager.desiredAccuracy= 10;

(2)CLLocation地理位置信息相關(guān)的類,

《1》coordinate:經(jīng)緯度(latitude緯度、longitude經(jīng)度)東經(jīng)正數(shù)西經(jīng)負數(shù)

《2》altitude:高度

《3》horizontalAccuracy:水平的精準度,可以用它檢測是否定位成功。如果是正數(shù)=定位成功

《4》verticalAccuracy:垂直的精準度

《5》course:航向0.0 ~ 359.9真北方向為0.0當前設備前進的方向0°表示向北90°表示向東180°表示向南270°表示向西

《6》speed:速度

《7》timestamp:時間戳

《8》floor:樓層高度level:層數(shù)

(3)CLLocationCoordinate2D經(jīng)緯度信息的數(shù)據(jù)類型-坐標(是一個結(jié)構(gòu)體,而不是類)

(4)CLRegion表示范圍的類

(5)CLGeocoder地理編碼、反地理編碼的類

(6)CLPlacemark表示地標的類(地址信息、用文字表示位置信息的類,里面同時包含了LocaTion)

(7)CLHeading表示導航方向的類(航向)

//獲得地磁方向

CLLocationDirection

direction = newHeading.magneticHeading;

//角度=地磁方向*π/180; M_PI:π的宏定義

CGFloat angle = M_PI*direction/180;

//設置圖片的角度

compassView.transform

= CGAffineTransformMakeRotation(angle);

(8)

(9)CLLocationDistance:距離

2、具體使用

(1)定位的操作步驟

《1》導入框架

《2》檢查用戶是否在設置中打開了定位服務

[CLLocationManager locationServicesEnabled];

《3》初始化定位對象(盡量使用屬性或者全局變量創(chuàng)建)

desiredAccuracy:精度設置

distanceFilter:多少米更新一次

《4》info中添加描述使用定位的目的并向用戶申請授權(quán)

《5》掛上代理,并實現(xiàn)代理方法

-

(void)locationManager:(CLLocationManager *)manager

didUpdateLocations:(NSArray

*)locations成功的時候調(diào)用

- (void)locationManager:(CLLocationManager *)manager失敗的時候調(diào)用

didFailWithError:(NSError*)error

《6》如果需要使用后臺定位服務,需要在info中添加Required background modes這個key以及它里面的元素App

registers for location updates

《7》開始定位startUpdatingLocation

(2)地理編碼、反編碼

1、反地理編碼:把位置信息轉(zhuǎn)換成地名(文字)

用處:可以通過點擊選擇地圖上的某一個位置來獲得這個位置文字的描述

<1>location:位置信息

<2>region:范圍

<3>addressDictionary:地址信息字典

1、name:地名

2、thoroughfare:街道

3、subThoroughfare:街道的副標題

4、locality:城市

5、subLocality:城市的相關(guān)信息

6、administrativeArea:州省

7、subAdministrativeArea:州省相關(guān)信息

8、postalCode:郵政編碼

9、ISOcountryCode:國家編碼

10、country:國家

11、inlandWater:水源湖泊

12、ocean:海洋

13、areasOfInterest:相關(guān)的地標

2、地理編碼:把地名轉(zhuǎn)換成位置信息

用處:通過文字描述的位置轉(zhuǎn)換成地圖上的經(jīng)緯度

3、地理編解碼在編解碼的時候是一個耗時的操作可以使用異步操作,不然會堵塞主線程

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

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

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