我正在编写一款使用GPS的应用。我可以成功获得纬度,经度和其他属性,但高度似乎总是返回“0.00”我有以下代码以最简单的方式测试它仍然得到0.00。代码如下:
-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
// Stop updating location if renewed in less than 60 seconds
if ([self timeBetweenLocationandNow] < 60)
{
[locationManager stopUpdatingLocation];
NSLog(@"GPS Stopped");
}
NSLog(@"Altitude:%.2f m",newLocation.altitude);
}
关于什么可能出错的任何想法?同样在init方法上我有以下内容:
- (id)init
{
self = [super init];
if (self != nil)
{
// Create location manager Object
locationManager = [[CLLocationManager alloc] init];
// Set the delegate to this object
[locationManager setDelegate:self];
// Set distance filter and accuracy
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[locationManager startUpdatingLocation];
}
return self;
}
将欣赏任何见解。谢谢
答案 0 :(得分:0)
我不是专家,但这就是我的理解:iPhone与其他gps系统完全不同,因为它有多种方式来确定你的位置。 iPhone以三种方式计算出位置:本地wifi信号,手机信号塔和/或GPS芯片。使用gps卫星查找位置可能非常慢,并且在人口稠密的城市中几乎不存在接收。因此,iPhone通常首先考虑前两个选项。
Wifi定位数据来自在街道上行驶的人们记录热点,这显然不会给人一种高度的暗示。我不确定细胞塔三角测量是否给出任何高度数据,但我的猜测是否定的。与gps相比,这两种方法非常快,但如您所见,将产生0的高度。如果你所在的地方有一个像样的GPS卫星接收,iPhone可能会给你高度,但即使这样,它甚至可能找不到它,直到它收到卫星信号几次并称为位置代表多次,甚至gps的高度数据也可能是出了名的不准确。
长话短说,从iPhone上获取准确的高度数据是一个坏主意。
答案 1 :(得分:0)