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