iphone получение местоположения пользователя через определенные промежутки времени

Я просмотрел некоторые вопросы в stackoverflow, но не смог получить четкую картину. Я работаю над приложением для iPhone, которое включает получение местоположения пользователя через GPS и обработку на основе полученного мной значения. Я просто хотел убедиться, как мне это реализовать? Используя этот метод:

[locationManager startUpdatingLocation]

дает мне точное местоположение, но он продолжает часто обновляться, чего я не хочу. Я хотел бы получать информацию о местоположении пользователя периодически, то есть каждые 2 минуты. Как мне это реализовать?

Метод, который я подумал (интервал 10 секунд):

- (void)viewDidLoad { 
    self.locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    locationManager.distanceFilter = kCLDistanceFilterNone;
    NSTimer *currentTimer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(theActionMethod) userInfo:nil repeats:YES];
}

и в методе действия для таймера:

- (void)theActionMethod {
     [locationManager startUpdatingLocation];
}

и метод didUpdatetoLocation:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
     self.startingPoint = newLocation;
     NSString *latitudeString = [[NSString alloc] initWithFormat:@"%g\u00B0", newLocation.coordinate.latitude];
     NSLog([@"Latitude : " stringByAppendingString:latitudeString]);
     [latitudeString release];
     [locationManager stopUpdatingLocation];
}

Теперь я получаю ценность, которая остается неизменной во всем. Каждые 10 секунд местоположение обновляется, но все значения остаются прежними (я пробовал печатать долготу, точность по горизонтали, высоту, точность по вертикали и т. Д.). Поэтому, пожалуйста, помогите мне, как получить точное (по крайней мере, несколько точное, потому что я знаю, что GPS неточен) местоположение пользователя каждые 2 минуты.

И я также хотел бы знать, как реализовать функцию monitoringRegions и importantlocationchange. Кто-нибудь успешно его реализовал? Я не мог этого сделать. Я не заметил никаких изменений (я напечатал что-то в didEnterRegion, которое никогда не печаталось, даже когда я возвращался и выходил из региона). Заранее большое спасибо.


person Goku    schedule 08.07.2011    source источник
comment
Это два вопроса; вам следует задать 2 отдельных вопроса. И ваш мониторинг регионов слишком общий - что именно не сработало? Теперь вернемся к вашему основному вопросу: вы тестируете это в машине / поезде / автобусе / самолете / лодке, чтобы фактическое местоположение менялось каждые 10 секунд? Если вы просто сидите за своим столом, местоположение GPS будет каждый раз одним и тем же (после первоначального обнуления).   -  person Rayfleck    schedule 08.07.2011
comment
Я должен был задать это как 2 вопроса. В любом случае, я не уверен, как работают MonitoringRegions. Например, как часто он обновляется? Во время движения. Предположим, мы пересекаем регион за 10 секунд (вход и выход за 10 секунд). Сообщит ли он мне об этом? Я тестировал, входя и выходя из своего приблизительного региона мониторинга.   -  person Goku    schedule 08.07.2011
comment
Какого уровня точности вы ожидаете? Я не знаю точного предела, но 100 метров, наверное, близко. Другими словами, GPS не сможет определить (точно), что вы переместились только на 75 метров.   -  person Rayfleck    schedule 08.07.2011


Ответы (1)


Просто делайте то же самое, что вы уже делаете. Просто проигнорируйте метод делегата и измените theActionMethod:, чтобы использовать свойство locationManager.location, как хотите.

person thelaws    schedule 08.07.2011
comment
Привет, просто хотел узнать больше о работе ... Итак, вы собираетесь сказать, что метод делегата можно удалить и просто использовать locationManager.location для получения обновленных значений местоположения в theActionMethod? Не могли бы вы указать мне на какие-либо ресурсы, которые помогли бы мне научиться делать это таким образом, или было бы здорово, если бы вы могли внести правку в то, как это сделать ... Спасибо. - person iSeeker; 13.05.2014