Как получить расстояние от 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 для большей точности.