2011-07-23 13 views
1

ロケーションマネージャのアップデート間隔を制御する方法はありますか?私は精度のために最も近い10メートルの設定を使用しましたが、私のアプリケーションは毎秒1つのアップデートを取得するように見えますが、それはあまりにも頻繁に起こると思います。私は良い精度が欲しいが、周波数は望んでいない。コントロールロケーションマネージャの更新間隔

ありがとうございました。

+0

[Location Managerの更新頻度、iphone]の複製が可能です(http://stackoverflow.com/questions/7385102/location-manager-update-frequency-iphone) –

答えて

0

私はタイマーでそれをやった:

- (void)viewDidLoad 
{ 
... 
[frequentLocationUpdateTimer invalidate]; 
frequentLocationUpdateTimer = [NSTimer scheduledTimerWithTimeInterval:30 target:self selector: 
       @selector(reEnableLocationTick:) userInfo:nil repeats:YES]; 
... 
} 
- (void)reEnableLocationTick:(NSTimer *)theTimer 
{ 
    [locationGetter startUpdates]; //Maybe you have to change this line according to your code 
} 

とあなたのlocationmanager中...:

の.mファイルに

ServerInterface *serverInterface; 

:ヘッダー内の

追加

- (void)locationManager:(CLLocationManager *)manage didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    ... 

     if (newLocation.horizontalAccuracy < 100) 
    { 
     [locationManager stopUpdatingLocation]; 
    } 
    ... 

    // let our delegate know we're done 
    [delegate newPhysicalLocation:newLocation]; 
} 

コードは単に更新を停止します。 100mの最小精度に達した後の位置。その後、30秒ごとにタイマーがlocationManagerを再度有効にします。

+0

こんにちは、私の質問にお返事ありがとうございます。あなたはアップデートを止めるのが正しい解決策ですか?最初に更新を開始したときに、正確な場所を取得するために5〜10回の更新が必要であることがわかりました。更新が停止した場合は、較正時間が必要になることがあります。これはアプリケーションにとって受け入れられないかもしれません。誰でもコメントがありますか?ありがとう... – user675823

+0

こんにちは、sry私はあなたに何かを忘れてしまった。私の場合、-stopUpdatingLocationはデリゲートの呼び出しを抑制するだけです。 – Thomas

+1

もう一度ありがとうございます。なぜあなたは「あなたのケースで」それが代議員の呼び出しを抑止していると言いますか? [locationManager stopUpdatingLocation]呼び出しによって位置の更新が抑制されるのは本当ですか?今、最も重要なのは、[locationManager startUpdatingLocation]が再度呼び出されたときに、更新された位置がすぐに呼び出され、較正時間が必要でないことがわかりますか? – user675823