1. 程式人生 > >iOS開發之獲取實時海拔高度

iOS開發之獲取實時海拔高度

上一篇介紹了獲取當前氣壓值以及裝置相對高度的方法,現在我們來看一下如何獲取當前裝置絕對高度既海拔高度(除了直接看iPhone6的指南針)。

普及一下常識:海拔高度也稱絕對高度,就是某地與海平面的高度差,通常以平均海平面做標準來計算,是表示地面某個地點高出海平面的垂直距離,1956年至今,我國計算的海拔高度都是以青島的黃海海面作為零點算起。

首先我們要匯入地圖框架既下面兩個框架
#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>
然後例項化物件。。。。不多說了
_locationManager = [[CLLocationManager alloc] init];
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
_locationManager.delegate
= self; [_locationManager requestAlwaysAuthorization]; [_locationManager startUpdatingLocation]; _startLocation = nil; 這裡別忘了遵循代理CLLocationManagerDelegate

插一句話:iOS把之後呢,蘋果官方處於對使用者的尊重,必須提示使用者授權使用地理定位功能,那我們要做的就是看圖:這裡寫圖片描述

這兩個加在info.plist中的變數分別是:
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription

xml程式碼:
<key
>
NSLocationWhenInUseUsageDescription</key> <string>YES</string> <key>NSLocationAlwaysUsageDescription</key> <string>YES</string>
然後實現CLLocationManagerDelegate裡的代理方法
- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation
*)
oldLocation __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_NA, __IPHONE_2_0, __IPHONE_6_0) __TVOS_PROHIBITED __WATCHOS_PROHIBITED; 下面是具體實現 -(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { float altitude = newLocation
.altitude; NSLog(@"海拔高度為:%.2fm",altitude); NSLog(@"垂直精度為:%.2fm",newLocation.verticalAccuracy); }
錯誤返回代理方法
-(void)locationManager:(CLLocationManager *)manager
      didFailWithError:(NSError *)error {
    NSLog(@"error.userInfo:%@\nerror.domain:%@",error.userInfo,error.domain);
}
其實很簡單 其實很自然  兩個人的愛由兩人分擔
其實並不難 是你太悲觀  隔著一道牆不跟誰分享