0

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;
}

洞察に感謝します。ありがとうございました

4

2 に答える 2

0

私は専門家ではありませんが、これが私が理解している方法です。iPhoneは、現在地を把握するためのさまざまな方法があるため、他のGPSシステムとはまったく異なります。iPhoneは、ローカルWi-Fi信号、セルタワー、GPSチップの3つの方法で場所を特定します。GPS衛星を使用して位置を見つけるのは非常に遅くなる可能性があり、人口の多い都市では受信がほとんど存在しない可能性があります。したがって、iPhoneは通常最初の2つのオプションを最初に調べます。

Wifiの位置データは、明らかに高度のヒントをあまり与えないホットスポットをログに記録している通りを運転している人々から取得されます。セルタワーの三角測量で高度データが得られるかどうかはわかりませんが、推測ではありません。これらの2つの方法は、GPSに比べて非常に高速ですが、これまで見てきたように、高度は0になります。あなたがまともなgps衛星受信がある場所にいるなら、iPhoneはあなたに高度を与えるかもしれません、しかしそれでも、それが衛星信号を数回受信しそしてロケーションデリゲートを複数回呼び出すまでそれはそれを見つけることさえできないかもしれません、それでも、GPSの高度データは不正確であることがよく知られています。

簡単に言えば、iPhoneからの正確な高度データを頼りにするのは悪い考えです。

于 2011-04-03T08:40:45.967 に答える
0

私は問題を見つけました。Deepmistが提案したように、代理人は数回呼び出される必要があります。最初の修正後、GPSを停止していました。これにより、座標の正確なデータが得られましたが、高度は3程度のデリゲートコールになるまで0.00のままでした。今、私は高度データを取得します、これをチェックするための良い方法は何ですか?データを取得した後、ロケーションマネージャーを停止できますか?高度がゼロ以外の値であることを確認できますが、すべての位置データを有効にするために可能な限り最高の精度を確保するために、代わりに使用する必要がある他のプロパティがあるかどうか疑問に思っていました(つまり、一部のプロパティでゼロ以外) )。ありがとうございました

于 2011-04-03T15:54:02.617 に答える