2

Я работаю над приложением, где он проверяет ваше местоположение каждую минуту или около того, чтобы узнать, изменилось ли ваше местоположение. Я имитирую изменения местоположения, используя имитируемое местоположение в xCode. Сначала я буду делать Лондон, а затем, когда он обновится, я изменю его на что-то вроде Токио, а затем, когда придет время проверить местоположение снова, он просто не обновится, он все еще думает, что это в Лондоне.CLLocationManager не возвращает правильное местоположение

-(void)recheckLocation{ 
    locationManager = nil; 

    [recheckLocation invalidate]; 

    locationManager = [[CLLocationManager alloc]init]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters; 
    [locationManager startUpdatingLocation]; 
} 

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    geocoder = [[CLGeocoder alloc] init]; 

    [locationManager stopUpdatingLocation]; 

    // Reverse Geocoding 
    [geocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error) { 
     NSLog(@"Found placemarks: %@, error: %@", placemarks, error); 
     if (error == nil && [placemarks count] > 0) { 

      placemark = [placemarks objectAtIndex:0]; 
      NSString *Location = [NSString stringWithFormat:@"%@, %@",placemark.locality, placemark.administrativeArea]; 

      recheckLocation = [NSTimer scheduledTimerWithTimeInterval:60.0f target:self selector:@selector(recheckLocation) userInfo:nil repeats:YES]; 

     } else { 
      NSLog(@"%@", error.debugDescription); 
     } 
    } ]; 

} 

Независимо от того, сколько раз я изменил местоположение, он просто дает мне одно и то же место каждый раз, а не правильный. Может ли кто-нибудь сказать мне, что я делаю неправильно?

ответ

0

Его немного старше пост, и у меня есть базовые знания в CLLocationManager, но все же я пытаюсь решить эту проблему. Я понимаю из вашего предыдущего кода, что CLLocationManager воссоздается каждый раз. CLLocationManager похож на одноэлементный класс, который вам не нужно воссоздавать каждый раз. Вам просто нужно вызвать [locationManager startUpdatingLocation]; ,

Также каждый раз, когда вы вызываете [geocoder reverseGeocodeLocation: xxx]. Вероятно, вам нужно найти точность, прежде чем делать это, чтобы она не вызывалась снова и снова.

Смежные вопросы