0

ユーザーを追跡するアプリケーションを作成しています。アプリケーションがバックグラウンドで実行され、アプリを開くと、約5秒までユーザーの現在の場所が間違って表示されることに気付きました。その5秒の遅延が追跡結果を台無しにするので、それを修正することはありますか(理由もなく3マイル余分に追加されます)。

編集:問題は実際には「バグ」ではありませんでした。Info.plistで、バックグラウンド処理とブームを設定する必要があります。アプリケーションの追跡は非常に正確です。それを行うための小さなチュートリアル:

  1. Info.plistに移動します
  2. 「必要なバックグラウンドモード」という新しい行を追加します
  3. 次に、「位置情報の更新のためのアプリ登録」という新しい行を再度追加します
  4. 私たちは完了しました:)
4

1 に答える 1

5

できることの 1 つは、返却されるhorizontalAccuracy物件を確認することです。CLLocationこれが特定のしきい値を超えている場合は、結果を破棄して、より正確な結果を待つことができます。数マイル離れている場合、精度の数値はかなり大きいと予想されます。GPS ではなくセル サイトを使用して位置を特定している可能性が高く、エラーの範囲ははるかに大きくなります。

CLLocationManagerDelegatelocationManager:didUpdateLocations:メソッドでは、次のことができます。

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
  if ([locations count] > 0) {
    CLLocation *lastUpdatedLocation = [locations lastObject];
    CLLocationAccuracy desiredAccuracy = 1000; // 1km accuracy
    if (lastUpdatedLocation.horizontalAccuracy > desiredAccuracy) {
      // This location is inaccurate. Throw it away and wait for the next call to the delegate.
      return;
    } 
    // This is where you do something with your location that's accurate enough.
  }
}
于 2012-11-21T21:43:07.800 に答える