CLLocationManager をいじり始めており、以下のコールバック メソッドを使用しようとしています。iPhone でテストするために外に出ましたが、最初の数回の更新で、どこにも移動していないのに突然距離が 39 メートルになるなど、意味不明な値が得られたようです。または、5 メートルから始まり、20 メートルにジャンプすることもあります。私は外に出て歩きましたが、最初のスタート地点からの更新は「OK」のように見えました。その後、歩いて戻ると、元の 39 メートルのスタート地点に戻りました。以下で行っていることが正しいかどうか疑問に思っていました。CLLocationManager オブジェクトを初期化する viewDidLoad メソッドも含めました。
最初の値が正確であることを確認する方法はありますか? 前もって感謝します。
- (void)viewDidLoad
{
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
if (startingPoint == nil) {
NSLog(@"NIL starting point");
self.startingPoint = newLocation;
}
CLLocationDistance distance = [newLocation distanceFromLocation:startingPoint];
NSString *distanceString = [[NSString alloc] initWithFormat:@"%g m", distance];
distanceLabel.text = distanceString;
[distanceString release];
numberOfUpdates++;
NSString *countString = [[NSString alloc] initWithFormat:@"%d", numberOfUpdates];
countLabel.text = countString;
[countString release];
}