iOS GPS定位開發基礎知識
iOS -GPS定位服務和地圖應用是兩套完全不同的API。
iOS 7 的 四種定位服務
- GPS衛星 優點最為準確,缺點 耗電量大,不能遮擋(建筑物內不行)
- WI-FI通過WIFI路由器定位 優點比較省電,經濟實惠
- 蜂窩式移動電話基站。通過移動運營商基站定位 誤差比較大
- iBeacon微定位。 蘋果公司自己研發的iBeacon,使用低功耗的藍牙。 </ul>
- CLLocationManager 用于定位管理的類,他提供位置信息和高度信息,也可以監控設備進入或者離開某個區域,還可以獲得設備的運行方向;
- CLLocationManagerDelegate。CLLocationManager類的委托協議;
- CLLocation 封裝了位置和高度信息; </ul>
(void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [locationManager stopUpdatingLocation]; }</pre>
當獲取位置成功的時候進行調用代理來獲取數據- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { CLLocation * currentLocation = [locations lastObject]; double altitude = currentLocation.altitude;//高度 double latitude = currentLocation.coordinate.latitude; double longitude = currentLocation.coordinate.longitude; }
代理中得lication是位置數據數組,最后一個是當前位置 ;cllocation類
初始化函數
– initWithLatitude:longitude: – initWithCoordinate:altitude:horizontalAccuracy:verticalAccuracy:timestamp: – initWithCoordinate:altitude:horizontalAccuracy:verticalAccuracy:course:speed:timestamp: 屬性: coordinate property 地理坐標 altitude property 高度 horizontalAccuracy property 地圖中顯示圓的半徑 verticalAccuracy property 垂直高度的精確度 timestamp property 位置確定的時間 – distanceFromLocation: 指定位置到當前位置的距離 speed property 運動的速度 course property 設備的方向
CLLocation 封裝了位置、高度等信息
altitude是高度值 coordinate是封裝的經緯度的結構體 CLLocationCoordinate2D typedef struct { CLLocationDegrees latitude; //經度 CLLocationDegrees longitude; //緯度 } CLLocationCoordinate2D; CLLocationDegrees 是double類型別名</pre><br />
iOS 定位服務開發不需要指定定位途徑(除了微定位外)ios 會根據設備的情況采用最佳方案,如果能接受GPS優先采用GPS定位,次之是Wi-Fi ,最后是蜂窩式基站定位;
iOS 7 定位服務使用Core Location框架
第一次請求定位信息時,系統會提示用戶是否允許開啟定位服務。
</div>
- (void)viewDidLoad { [super viewDidLoad]; locationManager = [[CLLocationManager alloc]init]; locationManager.delegate = self; locationManager.desiredAccuracy = kCLLocationAccuracyBest; locationManager.distanceFilter = 1000.f; }初始化一個定位管理器 設置好代理
desireAccuracy這個屬性用來設置經度的
kCLLocationAccuracyBest; 電池供電的最高精度 kCLLocationAccuracyNearestTenMeters; 精確到10米 kCLLocationAccuracyHundredMeters;精確到100米 kCLLocationAccuracyKilometer;精確到1000米 kCLLocationAccuracyThreeKilometers;精確到3000米
經度越高獲得信息時間越短。耗電越多。
distabceFilter 屬性定義了設備移動后獲得位置信息的最小距離,單位是米;
設置距離篩選器distanceFilter,表示設備至少移動1000米,才通知委托更新
在視圖展現的時候分別開啟和關閉定位服務
- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [locationManager startUpdatingLocation]; }
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!