上一篇介绍了获取当前气压值以及设备相对高度的方法,现在我们来看一下如何获取当前设备绝对高度既海拔高度(除了直接看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中的变量分别是:NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescriptionxml代码:<key>NSLocationWhenInUseUsageDescription</key><string>YES</string><key>NSLocationAlwaysUsageDescription</key><string>YES</string>
然后实现CLLocationManagerDelegate里的代理方法- (void)locationManager:(CLLocationManager *)managerdidUpdateToLocation:(CLLocation *)newLocationfromLocation:(CLLocation *)oldLocation __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_NA, __IPHONE_2_0, __IPHONE_6_0) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;下面是具体实现-(void)locationManager:(CLLocationManager *)managerdidUpdateToLocation:(CLLocation *)newLocationfromLocation:(CLLocation *)oldLocation{float altitude = newLocation.altitude;NSLog(@"海拔高度为:%.2fm",altitude);NSLog(@"垂直精度为:%.2fm",newLocation.verticalAccuracy);}
错误返回代理方法-(void)locationManager:(CLLocationManager *)managerdidFailWithError:(NSError *)error {NSLog(@"error.userInfo:%@\nerror.domain:%@",error.userInfo,error.domain);}
其实很简单 其实很自然 两个人的爱由两人分担其实并不难 是你太悲观 隔着一道墙不跟谁分享