CLLocationManger дает старое местоположение. Как получить новое местоположение? - PullRequest
0 голосов
/ 30 октября 2009

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

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

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

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

Ответы [ 3 ]

0 голосов
/ 22 марта 2011

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

- (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.you получит много примеров исходного кода с объяснением

0 голосов
/ 09 декабря 2011

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

0 голосов
/ 30 октября 2009

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

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

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

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

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

locationManager.delegate=self;

[locationManager startUpdatingLocation];

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

...