我不明白为什么,我已经在模拟器上尝试了很多地方.
我的代码是这样的:
- (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];}
我的错误在哪里?
解决方法 您的代码没有任何问题,因为您使用的是模拟器.确定高度需要具有GPS功能的设备,并且您还需要在该设备上使用GPS才能获得它(即使在支持GPS的设备上,仅wifi位置也不会正确报告高度). iOS模拟器没有这些功能,因此高度不准确.您需要使用带有GPS的真实设备来获取高度测量值.
如果要模拟具有高度的CLLocation,可以创建CLLocation对象并自行传递高度:
- (ID)initWithCoordinate:(CLLocationCoordinate2D)coordinate altitude:(CLLocationdistance)altitude horizontalAccuracy:(CLLocationAccuracy)hAccuracy verticalAccuracy:(CLLocationAccuracy)vAccuracy timestamp:(NSDate *)timestamp
Altitude是一个只读属性,因此您需要自己创建一个新的CLLocation对象,而不是在委托回调中收到CLLocation对象时手动更改它.
总结以上是内存溢出为你收集整理的ios – iPhone模拟器上的海拔高度始终为零全部内容,希望文章能够帮你解决ios – iPhone模拟器上的海拔高度始终为零所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)