Я начинаю возиться с CLLocationManager и пытаюсь использовать метод обратного вызова ниже. Я вышел на улицу, чтобы протестировать его на своем iPhone, и с первыми несколькими обновлениями я, кажется, получил бредовые значения, как будто вдруг мое расстояние составляет 39 метров, хотя я никуда не двигался. Или иногда он начинается с 5, а затем прыгает на 20 метров, опять же, я никуда не двигаюсь. Я вышел на улицу и пошел, и обновления с начальной отправной точки казались «в порядке», а затем, когда я вернулся, я вернулся к исходной 39-метровой отправной точке. Мне было интересно, правильно ли то, что я делаю ниже. Я также включил свой метод viewDidLoad, где я инициализирую свой объект CLLocationManager.
Есть ли способ убедиться, что мои первые значения точны? Заранее спасибо.
- (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];
}