iPhone CLLocationManager обновляется каждые 0,5 секунды - PullRequest
2 голосов
/ 24 мая 2011

Для приложения, которое выполняет большие вычисления из GPS, мне нужно получать широту / долготу и скорость каждые 0,5 секунды, чтобы быть очень точными и избегать задержек.

Я использую:

  • [locationManager setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];
  • - locationManager:didUpdateToLocation:fromLocation: функция для сохранения значения в 3 переменных: newLatitude, newLongitude и newSpeed
  • NSTimer объект, который вызываетфункция каждые 0,5 секунды.

См. ниже график, сгенерированный Excel, представляющий значения широты в течение 18 секунд:

Latitude values during 18 seconds

Мы ясно видим, чтоу нас есть обновления местоположения каждую секунду, а не каждые 0,5 секунды, как хотелось бы.Я делаю пробные заезды по моему офису, поэтому моя скорость варьируется от 0 до 65 миль в час.Поэтому, когда я еду со скоростью 50 миль в час, я должен получать разные значения широты / долготы / скорости от iPhone каждые 0,5 с, верно?

Скажите, пожалуйста, как я могу получать эти обновления местоположения каждые 0,5 с, если вы знаететочность с объектом CLLocationManager.

Спасибо!

Ответы [ 2 ]

5 голосов
/ 24 мая 2011

Вы не можете указать менеджеру местоположения, как часто вы хотите получать обновления, а только ответить, когда он решит предоставить вам обновления. На время получения обновлений нельзя рассчитывать, это зависит от простоты поиска сигналов WiFi и GPS.

0 голосов
/ 17 мая 2014
[self.locationManager startUpdatingLocation];
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self     selector:@selector(myTimerFunc) userInfo:nil repeats:YES];

- (void)myTimerFunc
{
    CLLocation location = self.locationManager.location;
    // do work here //
}

 - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    // do nothing here //
}
...