1 獲取使用者位置
需要匯入CoreLocation框架
使用定位服務前,通常需要檢查定位服務是否可用 :
[CLLocationManager locationServicesEnabled]
ios7 的時候,在呼叫定位服務時,會自動申請使用者的授權
ios8 之後,在呼叫定位服務時,app必須主動去申請使用者的授權
需要在info.plist 檔案中宣告相關的key
CLLocationManager: //主要處理位置和方向相關的事件
- requestWhenInUseAuthorization// 僅僅是前臺可以獲取位置
- requestAlwaysAuthoriz // 在前臺與後臺均可獲取位置
代理方法: -locationManager: didChangeAuthorizationStatus
CLAuthorizationStatus 授權狀態
kCLAuthorizationStatusNotDetermined //使用者尚未決定授權許可權
kCLAuthorizationStatusRestricted //無法使用定位服務,該狀態使用者無法改變
kCLAuthorizationStatusDenied //使用者拒絕該應用使用定位服務,或是定位服務總開關處於關閉狀態
kCLAuthorizationStatusAuthorized //已經授權(廢棄)
kCLAuthorizationStatusAuthorizedAlways //使用者允許該程式無論何時都可以使用地理資訊
kCLAuthorizationStatusAuthorizedWhenInUse //使用者同意程式在可見時使用地理位置
2計算使用者位移,時間,平均速度
解決方法:
1.確定模擬器(手機)已經聯網並且允許程式獲取地理位置
2.重置地理位置服務或者網路服務
/*-------- 計算使用者位移, 時間, 平均速度 --------*/
CLLocationManager //主要處理位置和方向相關的事件
distanceFilter // 距離過濾值, 裝置移動達到該值後才會觸發代理方法
desiredAccuracy // 定位的精確度
activityType // 定位資料用途
- startUpdateLocation // 開始定位
- stopUpdateLocation // 停止定位
// CLLocationAccuracy 定位精確度
kCLLocationAccuracyBestForNavigation //導航級最佳精準
kCLLocationAccuracyBest //最佳精準
kCLLocationAccuracyNearestTenMeters //10米誤差
kCLLocationAccuracyHundredMeters //百米胡茬
kCLLocationAccuracyKilometer //千米誤差
kCLLocationAccuracyThreeKilometers //3千米誤差
// CLActivityType 定位資料用途
CLActivityTypeOther //作為普通用途
CLActivityTypeAutomotiv eNavigation //作為車輛導航
CLActivityTypeFitness //作為步行導航
CLActivityTypeOtherNavigation //作為其它導航
CLLocation //表示位置相關的資訊, 如果經度/緯度/高度/速度/路線等
coordinate //表示該位置的座標
timestamp // 定位資訊返回的時間
speed // 裝置移動速度 單位是米/秒
- distanceFromLocation // 計算兩個點之間的距離
3 獲取裝置方向,製作指南針
CLHeading // 表示裝置方向相關的資訊
magneticHeading //裝置與磁北的相對角度
trueHeading //設定與真北的相對角度, 必須和定位一起使用, iOS需要位置來計算真北
弧度 = 角度 / 180 * M_PI
4 判斷裝置在指定的區域內
CLCircularRegion //表示圓形區域的範圍
center // 圓形範圍的圓心
radius//
5 地理編碼和反地理編碼
地理編碼: 根據使用者描述獲取地標資訊 NSString -> CLPlacemark
反地理編碼: 根據位置獲取對應的描述資訊 CLLocation -> CLPlacemar
CLGeocoder: // 地理編碼
- geocodeAddressString: completionHandler: // 地理編碼
- reverseGeocodeLocation: completionHandler: // 反地理編碼
6 Mapkit 基本使用
CLPlacemark //表示地理位置資訊, 包括座標, 區域, 名稱, 街道等
name // 該地標的名稱
location // 地標的位置資訊
addressDictionary // 儲存地址資訊的字典
7 新增大頭針
MapView // 用於展示地圖的檢視
mapType // 地圖型別
userTrackingMode // 追蹤模式
//MKMapType 地圖型別
MKMapTypeStandard // 標準
MKMapTypeSatellite // 衛星地圖
MKMapTypeHybrid // 混合地圖 (衛星地圖 + 標準)
//MKUserTrackingMode 追蹤模式
MKUserTrackingModeNone //不追蹤
MKUserTrackingModeFollow // 追蹤使用者位置
MKUserTrackingModeFollowWithHeading, // 追蹤使用者位置與方向
// 地圖的手勢支援開關:
zoomEnabled // 放大縮小
scrollEnabled // 拖動
rotateEnabled // 旋轉
/*-------- 新增大頭針 --------*/
MKAnnotation協議(自定義大頭針資料模型時需要遵守該協議)
注意在iOS9中通過程式碼建立的MapView上新增大頭針無效
/**********************自定大頭針********************/
MKPinAnnotationView //原生大頭針檢視
pinColor 大頭針顏色選擇(MKPinAnnotationColor)
MKPinAnnotationColor 自定義大頭針顏色, iOS9新增屬性
canShowCallout 允許大頭針點選彈出檢視
leftCalloutAccessoryView 彈出檢視的左邊輔助檢視
rightCalloutAccessoryView 彈出檢視的右邊輔助檢視
detailCalloutAccessoryView 自定義彈出詳情檢視, iOS9新增屬性