Как получить расстояние от userLocation каждые 4-5 секунд

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

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

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

1 ответ

Решение

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

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 для большей точности.

Другие вопросы по тегам