CLLocationManger дает старое местоположение. Как получить новую локацию?

Я использую CLLocationManger для обновления текущего местоположения. Хотя это дает мне местоположение, но местоположение, которое я получаю, имеет гораздо более старую временную метку. Я столкнулся с проблемой, как заставить контроллер местоположения обновлять новое местоположение, а не кешированное местоположение.

В настоящее время я использую этот учебник ...

http://www.mobileorchard.com/hello-there-a-corelocation-tutorial/

Кто-нибудь знает, как обновить местоположение с текущей меткой времени, а не с кешированной?


person Madhup Singh Yadav    schedule 30.10.2009    source источник


Ответы (3)


Вы запускаете свой проект на симуляторе или на iPhone? Если вы запускаете проект на симуляторе, тогда

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 

будет вызван только один раз.

Если вы тестируете устройство, оно должно вызываться каждый раз при изменении вашего местоположения.

Убедитесь, что вы установили свойство менеджера местоположения,

locationManager.delegate=self;

[locationManager startUpdatingLocation];

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

person Napster    schedule 30.10.2009

вы можете использовать эти методы

- (IBAction)update {

    locmanager = [[CLLocationManager alloc] init]; 
    [locmanager setDelegate:self]; 
    [locmanager setDesiredAccuracy:kCLLocationAccuracyBest];
    NSLog(@"*********this is location update method of login view controller");
    [locmanager startUpdatingLocation];
}
-(void)awakeFromNib {
    [self update];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    if (wasFound) return; 
    wasFound = YES;

    CLLocationCoordinate2D loc = [newLocation coordinate];

    lat2 = [[NSString stringWithFormat: @"%f", loc.latitude]retain];
    logg2= [[NSString stringWithFormat: @"%f", loc.longitude]retain];
    NSLog(@"latitude is %@",lat2);
    NSLog(@"longitude is  %@",logg2);
}

вызовите метод обновления, используя селектор выполнения в методе viewdidload. Здесь lat2 и logg2 - строковые значения. если проблема не может быть решена, введите, как найти текущее местоположение в Google. вы получите много примеров исходного кода с объяснением

person nehal    schedule 22.03.2011

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

person Kevlar    schedule 08.12.2011