#pragma mark---*定位:
一、介紹
1忧风、定位使用CoreLocation框架
2默色、功能:(1)基礎(chǔ)定位-所在位置的信息(2)地理編碼-把地名轉(zhuǎn)換成地理位置、反編碼-把地理位置轉(zhuǎn)換成地名
3狮腿、IOS8腿宰、IOS9之后的變化
-IOS8:只有使用定位服務(wù)才向用戶請求
(1)添加了定位服務(wù)的目的寫在Info.plist里面-添加以下
《1》NSLocationAlwaysUsageDescription一直使用
《2》NSLocationWhenInUseUsageDescription當(dāng)使用時
《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需要同時設(shè)置成YES
//獲得系統(tǒng)的版本
if ([[UIDevice
currentDevice].systemVersionfloatValue]
>= 8.0) {
}
二吃度、使用
1、使用定位服務(wù)所需要的相關(guān)類和所需要的其他數(shù)據(jù)類型
(1)CLLocationManager定位的管理者贴硫,通過它創(chuàng)建定位服務(wù)的功能
//設(shè)置多少米去更新一次位置信息
locationManager.distanceFilter= 100;
//設(shè)置定位的精準(zhǔn)度
locationManager.desiredAccuracy= 10;
(2)CLLocation地理位置信息相關(guān)的類椿每,
《1》coordinate:經(jīng)緯度(latitude緯度、longitude經(jīng)度)東經(jīng)正數(shù)西經(jīng)負(fù)數(shù)
《2》altitude:高度
《3》horizontalAccuracy:水平的精準(zhǔn)度英遭,可以用它檢測是否定位成功间护。如果是正數(shù)=定位成功
《4》verticalAccuracy:垂直的精準(zhǔn)度
《5》course:航向0.0 ~ 359.9真北方向為0.0當(dāng)前設(shè)備前進的方向0°表示向北90°表示向東180°表示向南270°表示向西
《6》speed:速度
《7》timestamp:時間戳
《8》floor:樓層高度level:層數(shù)
(3)CLLocationCoordinate2D經(jīng)緯度信息的數(shù)據(jù)類型-坐標(biāo)(是一個結(jié)構(gòu)體,而不是類)
(4)CLRegion表示范圍的類
(5)CLGeocoder地理編碼挖诸、反地理編碼的類
(6)CLPlacemark表示地標(biāo)的類(地址信息汁尺、用文字表示位置信息的類,里面同時包含了LocaTion)
(7)CLHeading表示導(dǎo)航方向的類(航向)
//獲得地磁方向
CLLocationDirection
direction = newHeading.magneticHeading;
//角度=地磁方向*π/180; M_PI:π的宏定義
CGFloat angle = M_PI*direction/180;
//設(shè)置圖片的角度
compassView.transform
= CGAffineTransformMakeRotation(angle);
(8)
(9)CLLocationDistance:距離
2多律、具體使用
(1)定位的操作步驟
《1》導(dǎo)入框架
《2》檢查用戶是否在設(shè)置中打開了定位服務(wù)
[CLLocationManager locationServicesEnabled];
《3》初始化定位對象(盡量使用屬性或者全局變量創(chuàng)建)
desiredAccuracy:精度設(shè)置
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》如果需要使用后臺定位服務(wù),需要在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:街道的副標(biāo)題
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)的地標(biāo)
2逛裤、地理編碼:把地名轉(zhuǎn)換成位置信息
用處:通過文字描述的位置轉(zhuǎn)換成地圖上的經(jīng)緯度
3瘩绒、地理編解碼在編解碼的時候是一個耗時的操作可以使用異步操作,不然會堵塞主線程