標籤:des blog http io ar os 使用 sp 檔案
1:定位使用的生活情境在移動互連網時代,移動app能解決使用者的很多生活瑣事,比如導航:去任意陌生的地方周邊:找餐館、找酒店、找銀行、找電影院在上述應用中,都用到了地圖和定位功能 2:iOS定位依賴的架構在iOS開發中,要想加入這2大功能,必須基於2個架構進行開發Map Kit :用於地圖展示(比較重量級)Core Location :用於地理定位Map Kit的定位是基於Core Location的 iOS定位熱門術語:LBS :Location Based ServiceSoLoMo :Social Local Mobile(索羅門) 3:CoreLocation架構使用CoreLocation架構使用前提匯入架構匯入主標頭檔#import <CoreLocation/CoreLocation.h>CoreLocation架構使用須知:CoreLocation架構中所有資料類型的首碼都是CLCoreLocation中使用CLLocationManager對象來做使用者定位 4:CLLocationManager的常用操作開始使用者定位- (void)startUpdatingLocation; 停止使用者定位- (void) stopUpdatingLocation;當調用了startUpdatingLocation方法後,就開始不斷地定位使用者的位置,中途會頻繁地調用代理的下面方法- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;locations參數裡面裝著CLLocation對象 CLLocation用來表示某個位置的地理資訊,比如經緯度、海拔等等@property(readonly, nonatomic) CLLocationCoordinate2D coordinate;經緯度 @property(readonly, nonatomic) CLLocationDistance altitude;海拔 @property(readonly, nonatomic) CLLocationDirection course;路線,航向(取值範圍是0.0° ~ 359.9°,0.0°代表真北方向) @property(readonly, nonatomic) CLLocationSpeed speed;行走速度(單位是m/s) 用- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location方法可以計算2個位置之間的距離 @property(assign, nonatomic) CLLocationDistance distanceFilter;每隔多少米定位一次 @property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;定位精確度(越精確就越耗電) CLLocationCoordinate2D是一個用來表示經緯度的結構體,定義如下
typedef struct {
CLLocationDegrees latitude; // 緯度
CLLocationDegrees longitude; // 經度
} CLLocationCoordinate2D;
一般用CLLocationCoordinate2DMake函數來建立CLLocationCoordinate2D 5:使用者隱私的保護從iOS 6開始,蘋果在保護使用者隱私方面做了很大的加強,以下操作都必須經過使用者批准授權要想獲得使用者的位置想訪問使用者的通訊錄、日曆、相機、相簿等等當想訪問使用者的隱私資訊時,系統會自動彈出一個對話方塊讓使用者授權 5.1開發人員可以在尾碼名為Info.plist的檔案中設定NSLocationUsageDescription說明定位的目的(Privacy - Location Usage Description)一旦使用者選擇了“Don’t Allow”,意味著你的應用以後就無法使用定位功能為了嚴謹起見,最好在使用定位功能之前判斷當前應用的定位功能是否可用CLLocationManager有個類方法可以判斷當前應用的定位功能是否可用+ (BOOL)locationServicesEnabled;
iOS 地圖和定位功能