CLLocationManager дает старое местоположение - PullRequest
2 голосов
/ 05 июня 2011

В моем заголовке я поместил

CLLocationManager *locationManager;
@property (nonatomic, retain) CLLocationManager *locationManager;  

в мой файл реализации:

- (void)viewDidLoad
{
    self.locationManager = [[[CLLocationManager alloc] init] autorelease];
    self.locationManager.distanceFilter = 50.0f;
    [self.locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
    self.locationManager.delegate = self; 
    [locationManager startUpdatingLocation];
    [super viewDidLoad];
}

, затем в методе делегата

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation
{
        NSLog(@"Location: %g,%g", newLocation.coordinate.latitude, newLocation.coordinate.longitude );

}

Теперь я продолжаю получатьстарое значение широты и долготы

гуглил для решения я не смог найти ни одного, не понимаю что я делаю не так,

Любая помощь, пожалуйста

Ответы [ 2 ]

4 голосов
/ 05 июня 2011

Вы можете использовать отметку времени местоположения для фильтрации слишком старых обновлений местоположения:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    if ([newLocation.timestamp timeIntervalSinceNow] < -60) return; // location is not fresh
    ...
}
2 голосов
/ 10 июня 2011

Исходя из моего опыта, диспетчер местоположений будет получать обновление местоположения только тогда, когда телефон перемещается (предположительно для экономии заряда батареи).

Другими словами, если телефон получилОбновление местоположения 20 минут назад в определенном месте, и телефон не перемещается. Когда вы запускаете службы определения местоположения, он возвращает это старое значение в качестве «приемлемого» значения для объекта newLocation.

Вот почемуПредложение albertamg обычно применяется, хотя недостатком является то, что, отфильтровывая эти «старые» обновления, вы рискуете ничего не обнаружить с неподвижного телефона.

Надеюсь, это поможет =)

...