2011-05-23 7 views
2

GPSから多くの計算を行うアプリでは、緯度/経度と速度を0.5秒ごとに取得して、非常に正確で遅延を避ける必要があります。iPhone CLLocationManagerは0.5秒ごとに更新します

私が使用しています:

  • [locationManager setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];
  • - locationManager:didUpdateToLocation:fromLocation:機能を3つの変数に値を格納する:newLatitudenewLongitudenewSpeed
  • 機能毎に0.5秒を呼び出すNSTimerオブジェクト。

18秒間緯度値を表すExcelで生成されたグラフの下に見る

Latitude values during 18 seconds

我々は望んだように位置が0.5秒毎に毎秒を更新し、していないことをはっきりと見ることができます。私は私のオフィスの周りを走るサンプルをするので、私のスピードは0から65 MPHの間で変わります。だから私は50MPHを運転しているとき、0.5秒ごとにiPhoneから緯度/経度/スピードの値を変えなければなりません。

CLLocationManagerオブジェクトの精度について何か知っていれば、0.5秒ごとにその場所のアップデートをどのように得ることができるか教えてください。

ありがとうございます!

+2

CoreLocation Servicesは、いつ位置更新を送信するかを決定します。これを呼び出すだけですぐに値を取得することはできません。 GPSの三角測量は非常に高価で、デバイスがバッテリを節約し精度を向上させるために多くのトリックを使用します。 – rjstelling

答えて

5

ロケーションマネージャにアップデートの頻度を伝えることはできませんが、アップデートの提供を選択したときにのみ応答します。アップデートを入手するタイミングはカウントできません。WiFi信号とGPS信号を見つけやすいかどうかによって異なります。

+0

ありがとう@nevan、それは私が思ったことです。私は毎秒更新を受け取りますが、少なくともそれは素晴らしいです。私はちょうど0.5秒でより正確にしようと思っていましたが、残念ながら私はこれを決定できず、代理人からアップデートを受け取るのを待たなければなりません。 – Dachmt

0
[self.locationManager startUpdatingLocation]; 
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self  selector:@selector(myTimerFunc) userInfo:nil repeats:YES]; 

- (void)myTimerFunc 
{ 
    CLLocation location = self.locationManager.location; 
    // do work here // 
} 

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations 
{ 
    // do nothing here // 
}