ema*_*zzi 5 gps cocoa-touch cllocationmanager ios ios-simulator
我正在尝试在Xcode和Simulator上开发一个高度计,但它总是在海面以上的高度返回0.我不明白为什么,我已经在模拟器上尝试了很多地方.
我的代码是这样的:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
_mapView.delegate = self;
_locationManager = [[CLLocationManager alloc] init];
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
_locationManager.pausesLocationUpdatesAutomatically = YES;
_locationManager.delegate = self;
firstLocation = YES;
checkUserLocation = NO;
}
- (void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
CLLocation *location = [locations lastObject];
lastLocation = location.coordinate;
_latitudeLabel.text = [NSString stringWithFormat:@"Current latitude: %f", location.coordinate.latitude];
_longitudeLabel.text = [NSString stringWithFormat:@"Current longitude: %f", location.coordinate.longitude];
_altitudeLabel.text = [NSString stringWithFormat:@"Current altitude: %f m", location.altitude];
}
Run Code Online (Sandbox Code Playgroud)
我的错误在哪里?
你的代码没有问题,因为你使用的是模拟器。
确定海拔高度需要具有 GPS 功能的设备,并且您还需要在该设备上使用 GPS 才能获得它(即使在启用 GPS 的设备上,仅 WiFi 位置也无法正确报告海拔高度)。iOS 模拟器不具备这些功能,因此高度不会准确。您需要使用带有 GPS 的真实设备来获取高度测量值。
如果您想模拟具有海拔高度的 CLLocation,您可以创建 CLLocation 对象并自行向其传递海拔高度:
- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate
altitude:(CLLocationDistance)altitude
horizontalAccuracy:(CLLocationAccuracy)hAccuracy
verticalAccuracy:(CLLocationAccuracy)vAccuracy
timestamp:(NSDate *)timestamp
Run Code Online (Sandbox Code Playgroud)
Altitude 是一个只读属性,因此当您在委托回调中收到 CLLocation 对象时,您需要自己创建一个新的 CLLocation 对象,而不是手动更改它。
| 归档时间: |
|
| 查看次数: |
2330 次 |
| 最近记录: |