3

CLLocation オブジェクトをチェックして、それを使用するか、結果を破棄して代わりに新しい場所の更新を取得するかを決定するにはどうすればよいでしょうか?

CLLocation でタイムスタンプ プロパティを見ましたが、それを現在の時刻と比較する方法がわかりません。

また、時間を比較して秒単位の差を見つけた後、その CLLocation オブジェクトを使用するには、差はどの値を下回ればよいでしょうか? 適切なしきい値は何ですか。

ありがとう!

4

1 に答える 1

11

タイムスタンプを確認することは非常に重要です。iOS は通常、場所をキャッシュし、最初のメジャーとして最後にキャッシュされたものを返すため、Core Location Manager のデリゲート メソッド内で行う方法は次のとおりです。

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
    CLLocation * newLocation = [locations lastObject];
        //check if coordinates are consistent
        if (newLocation.horizontalAccuracy < 0) {
            return;
        }
        NSTimeInterval interval = [newLocation.timestamp timeIntervalSinceNow];
        //check against absolute value of the interval
        if (abs(interval)<30) {
            //DO STUFF
        }
    }

私は30秒使っています。ご覧のとおり、水平精度を求める結果の一貫性もチェックします。
これが役に立てば幸いです、
アンドレア

于 2013-01-02T10:00:51.363 に答える