iOS開發之獲取實時海拔高度
阿新 • • 發佈:2018-12-23
上一篇介紹了獲取當前氣壓值以及裝置相對高度的方法,現在我們來看一下如何獲取當前裝置絕對高度既海拔高度(除了直接看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);
}
其實很簡單 其實很自然 兩個人的愛由兩人分擔
其實並不難 是你太悲觀 隔著一道牆不跟誰分享