CLLocationManager未返回正确的位置

时间:2013-04-24 21:58:38

标签: ios-simulator cllocationmanager cllocation reverse-geocoding clgeocoder

我正在开发一个应用程序,每分钟检查一次您的位置,看看您的位置是否发生了变化。我通过在xCode中使用模拟位置来模拟位置更改。首先我会做伦敦,然后当它更新我会把它改成像东京这样的东西,然后当它再次检查位置时它不会更新,它仍然认为它在伦敦。

-(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);
        }
    } ];

}

无论我多少次改变位置,它每次都会给我一个相同的位置而不是正确的位置。有人能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:0)

它有点旧帖子,我在CLLocationManager的东西有基本知识,但我仍然试图解决这个问题。我从上面的代码中了解到每次都会重新创建CLLocationManager。 CLLocationManager就像一个单独的类,您不需要每次都重新创建。你只需要调用[locationManager startUpdatingLocation]; 。

每次调用[geocoder reverseGeocodeLocation:xxx]时也是如此。您可能需要在执行此操作之前找到准确性,以便不会一次又一次地调用它。