2012-03-14 9 views
1

基本的には、誰かが移動する経路とデータを記録するはずのアプリを作っています。私は正確さと不正確なレポートを決定することにいくつかの問題を抱えています。ここに私のiPhoneが記録したパスのイメージがあります。CoreLocationを使用した散発的な座標の防止

Path

データを記録するための私の代理人は、次のようになります:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    if (newLocation.horizontalAccuracy < 0) return; 
    NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow]; 
    // The "> 50.0f" is to hopefully throw out inaccurate points 
    if (locationAge > 5.0 || [newLocation distanceFromLocation:oldLocation] > 50.0f) return; 
    [[self locationPoints] addObject:newLocation]; 
    [self updateView]; 
} 

一部を赤い線は、ピンクのは、私が実際に(巨大なスクリーンショットのための謝罪を)歩いてどのように記録されているパスです私が見たアドバイスは、データが投影されたパスに適しているかどうかをフィルターで確認することです。これは最善の方法ですか?

答えて

1

あなたはnewLocation.horizontalAccuracyのチェック追加することができます。

if ((newLocation.horizontalAccuracy > 0.0) && (newLocation.horizontalAccuracy < 10.0)) 

それとも、あなたのケースのために:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    if (newLocation.horizontalAccuracy < 0) return; 
    NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow]; 
    
    if ((locationAge > 5.0)||(newLocation.horizontalAccuracy < 0.0)||(newLocation.horizontalAccuracy > 10.0)) return; 
    [[self locationPoints] addObject:newLocation]; 
    [self updateView]; 
} 

をこの(locationAge > 5.0)条件は奇妙なようです。あなたは本当にそれをしたいですか?デバイスが適切なGPS信号を>5.0sのために失うと、あなたのアプリにそれを保存すると更新が停止します。

もう一つ:あなたはまた、これは食べるが、バッテリーの多くを終了することを知っているが、テストのために必要がある

locationManager.desiredAccuracy=kCLLocationAccuracyBest; 

...

+0

雅I」:あなたとlocationManagerはセットアップに思い出してくれるあなたをしました最高の精度を使用しています。私は、バッテリー寿命が延びる限り、正確さのために適切な解決策を試す必要があります。私は最初の行(if(newLocation.horizo​​ntalAccuracy <0)return;)のhorizo​​ntalAccuracyをチェックしていますが、あまりにも大きな精度に対してチェックするのが良いでしょう。また、おそらく私はそれについて考えている場所の年齢になるはずです。いいですよね! – rnystrom

+1

@mystrom:うん、場所の時代は行く必要があります:) accuraacyについては、私はyoul'd最高10.0から20.0周りの最大設定と思う。その<0.0状態は無効なGPSのためです - GPSチップセットに場所の修正がない場合 –

関連する問題