要實現(xiàn)地圖、導航功能,往往需要先熟悉定位功能,在iOS中通過Core Location框架進行定位操作。Core Location自身可以單獨使用,和地圖開發(fā)框架MapKit完全是獨立的,但是往往地圖開發(fā)要配合定位框架使用。在Core Location中主要包含了定位、地理編碼(包括反編碼)功能。
定位是一個很常用的功能,如一些地圖軟件打開之后如果用戶允許軟件定位的話,那么打開軟件后就會自動鎖定到當前位置,如果用戶手機移動那么當前位置也會跟隨著變化。要實現(xiàn)這個功能需要使用Core Loaction中CLLocationManager類。首先看一下這個類的一些主要方法和屬性:


iOS 8 還提供了更加人性化的定位服務(wù)選項。App 的定位服務(wù)不再僅僅是關(guān)閉或打開,現(xiàn)在,定位服務(wù)的啟用提供了三個選項,「永不」「使用應(yīng)用程序期間」和「始終」。同時,考慮到能耗問題,如果一款 App 要求始終能在后臺開啟定位服務(wù),iOS 8 不僅會在首次打開 App 時主動向你詢問,還會在日常使用中彈窗提醒你該 App 一直在后臺使用定位服務(wù),并詢問你是否繼續(xù)允許。在iOS7及以前的版本,如果在應(yīng)用程序中使用定位服務(wù)只要在程序中調(diào)用startUpdatingLocation方法應(yīng)用就會詢問用戶是否允許此應(yīng)用是否允許使用定位服務(wù),同時在提示過程中可以通過在info.plist中配置通過配置Privacy - Location Usage Description告訴用戶使用的目的,同時這個配置是可選的。
但是在iOS8中配置配置項發(fā)生了變化,可以通過配置NSLocationAlwaysUsageDescription或者NSLocationWhenInUseUsageDescription來告訴用戶使用定位服務(wù)的目的,并且注意這個配置是必須的,如果不進行配置則默認情況下應(yīng)用無法使用定位服務(wù),打開應(yīng)用不會給出打開定位服務(wù)的提示,除非安裝后自己設(shè)置此應(yīng)用的定位服務(wù)。同時,在應(yīng)用程序中需要根據(jù)配置對requestAlwaysAuthorization或locationServicesEnabled方法進行請求。由于本人機器已經(jīng)更新到最新的iOS8.1下面的內(nèi)容主要針對iOS8,使用iOS7的朋友需要稍作調(diào)整。
下面我就總結(jié)了下定位功能的簡單實現(xiàn)。
定位和反查位置信息要加載兩個動態(tài)庫 CoreLocation.framework 和 MapKit.framework 一個獲取坐標一個提供反查
RootViewController的.h文件中,

RootViewController的.m文件中,

button的響應(yīng)方法,當點擊button的時候開始等位

locationManager的代理方法
