0

CLLocationManagerによって送信されたキャッシュデータを削除する方法とその精度を高める方法アプリを起動するたびに、キャッシュデータが表示され、しばらくすると更新されます。いくつかのスレッドを見ましたが、具体的なsolを取得できません誰かが私にコードを提供できますか?次の方法で位置データを取得しています。

- (void)locationManager:(CLLocationManager *)manager
     didUpdateToLocation:(CLLocation *)newLocation
       fromLocation:(CLLocation *)oldLocation

ここでデリゲートと精度を設定しました.....

- (void)viewDidLoad {
[super viewDidLoad];
bestEffortAtLocation = nil;
latLocationArray = [[NSMutableArray alloc]init]; 
longLocationArray = [[NSMutableArray alloc]init];
locationManager =[[CLLocationManager alloc]init];
locationManager.delegate = self;
locationManager.distanceFilter =  kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];

}

また、CLLocationManagerを使用して人の移動距離を計算できますか?

4

2 に答える 2

1

キャッシュされたデータをダンプする方法はないようです。ドキュメントでは、オブジェクトのタイムスタンププロパティを使用してCLLocation、データの最新性を判断することを推奨しています。これが私が行うことです。

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
    //wait until we get a recent location, no more than 2 minutes old
    if([newLocation.timestamp timeIntervalSinceNow] <= (60 * 2)){
        DLog(@"New location:\n\tLat: %f\n\tLon: %f", newLocation.coordinate.latitude, newLocation.coordinate.longitude)
        //turn off location updates
        [self.locManager stopUpdatingLocation];
        DLog(@"Stopping Location Updates");
        //Do stuff
    }
}

私のテストでは、新しいデータを取得する前に1、2秒以上待つ必要はありませんでした。

2番目のポイントでは、場所の更新を取得するたびに追加する変数を使用できます。CLLocation更新間の距離は、のdistanceFromLocation:メソッドを使用して非常に簡単に取得できます。

于 2010-06-22T12:59:46.447 に答える
0

distanceFilterをkCLDistanceFilterNoneに設定する代わりに

つまり、locationManager.distanceFilter = kCLDistanceFilterNone;

あなたはdistanceFilterにいくらかの値を与えてチェックするかもしれません

たとえば、locationManager.distanceFilter = 0.5f;

また、移動距離を計算するには、didUpdateToLocationを実装する必要があります。fromLocation:

新しい緯度と経度を見つける必要がある場所

最後に、CLLocationObject = newLocation;

CLLocationDistance yourdistance = [newLocation getDistanceFrom:CLLocationObject];

NSString * distance = [[NSString alloc] initWithFormat:@ "%gm"、yourdistance];

NSLog(@ "you have travel =%@"、distance);

于 2010-06-22T16:06:17.933 に答える