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]。在你這樣做之前,你可能需要找到準確性,這樣纔不會一次又一次地被調用。

相關問題