读取GPS位置时,位置管理器中的高度属性在Iphone上返回零

时间:2011-04-03 05:56:59

标签: iphone gps altitude

我正在编写一款使用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;
}

将欣赏任何见解。谢谢

2 个答案:

答案 0 :(得分:0)

我不是专家,但这就是我的理解:iPhone与其他gps系统完全不同,因为它有多种方式来确定你的位置。 iPhone以三种方式计算出位置:本地wifi信号,手机信号塔和/或GPS芯片。使用gps卫星查找位置可能非常慢,并且在人口稠密的城市中几乎不存在接收。因此,iPhone通常首先考虑前两个选项。

Wifi定位数据来自在街道上行驶的人们记录热点,这显然不会给人一种高度的暗示。我不确定细胞塔三角测量是否给出任何高度数据,但我的猜测是否定的。与gps相比,这两种方法非常快,但如您所见,将产生0的高度。如果你所在的地方有一个像样的GPS卫星接收,iPhone可能会给你高度,但即使这样,它甚至可能找不到它,直到它收到卫星信号几次并称为位置代表多次,甚至gps的高度数据也可能是出了名的不准确。

长话短说,从iPhone上获取准确的高度数据是一个坏主意。

答案 1 :(得分:0)

我发现了这个问题。正如Deepmist建议的那样,代表必须多次被召唤。我在第一次修复后停止了GPS。这给了我准确的坐标数据,但是海拔高度保持在@ 0.00,直到3个左右的委托电话。现在我得到高度数据,检查这个的好方法是什么?所以我可以在获得数据后停止位置管理器?我可以检查高度是否为非零值,但是想知道是否应该使用其他属性来确保您具有尽可能高的准确度,使所有位置数据有效(即某些属性上的非零值) )。谢谢