Как получить расстояние от userLocation каждые 4-5 секунд - PullRequest
3 голосов
/ 03 августа 2010

Я не использую это для направления движения или подобного.У меня есть несколько аннотаций, и мне нужен триггер, когда пользователь находится рядом с одним из них, поэтому я могу предупредить пользователя.

Похоже, что didUpdateToLocation вызывается только один раз за вызов startUpdatingLocation?По крайней мере, когда я NSLog внутри этого метода, я получаю только одну строку в консоли.Нет, я не гуляю с iphone.

Итак: Как правильно настроить непрерывный мониторинг userLocation и получить «обратный вызов» (либо через 3-4 секунды, либо когдапользователь сдвинулся, скажем, 10 метров)?

1 Ответ

3 голосов
/ 03 августа 2010

Как вы, наверное, знаете, это код для инициализации и запуска менеджера местоположений:

locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone; 
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
[locationManager startUpdatingLocation];

И реализовать didUpdateToLocation следующим образом:

- (void) locationManager:(CLLocationManager*)manager didUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation*) oldLocation 
{
   // This will be called every time the device has any new location information. 
}

Система будет вызывать didUpdateToLocation каждый раз, когда происходит обновление местоположения. Если система не обнаружит изменение местоположения, didUpdateToLocation не будет вызвано. Единственное, что вы можете сделать, это установить distanceFilter и desiredAccuracy, как я делал в примере, чтобы дать вам высочайшую точность.

Обновление

Для большей точности используйте kCLLocationAccuracyBest вместо kCLLocationAccuracyNearestTenMeters.

...