2016-09-20 56 views
0

即使沒有數據,我也需要能夠在我的iOS應用上獲取GPS座標。我不認爲這會是一個問題,因爲GPS與蜂窩信號是分開的,但我遇到了這個問題。這是我到目前爲止。如果蜂窩數據關閉時,我沒有得到任何錯誤消息,只是未能得到座標和離開這些值空:iOS沒有手機數據時獲取GPS座標

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.locationManager = [[CLLocationManager alloc] init]; 
    self.locationManager.delegate = self; 
    self.locationManager.desiredAccuracy=kCLLocationAccuracyBest; 
    self.locationManager.distanceFilter=kCLDistanceFilterNone; 
    [self.locationManager requestWhenInUseAuthorization]; 
    [self.locationManager startUpdatingLocation]; 
    geocoder = [[CLGeocoder alloc] init]; 
} 
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { 
    CLLocation *newLocation = [locations lastObject]; 
    [geocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error) { 
     if (error == nil&& [placemarks count] >0) { 
      placemark = [placemarks lastObject]; 
      NSString *latitude, *longitude, *state, *country; 
      latitude = [NSString stringWithFormat:@"%f",newLocation.coordinate.latitude]; 
      longitude = [NSString stringWithFormat:@"%f",newLocation.coordinate.longitude]; 
      self.theCoord.text = [[latitude stringByAppendingString:@", "] stringByAppendingString:longitude]; 

     } else { 
      NSLog(@"%@", error.debugDescription); 
     } 
    }]; 
    // Turn off the location manager to save power. 
    [self.locationManager stopUpdatingLocation]; 
} 

回答

3

位置更新應該沒有互聯網工作,但地理編碼不會。這是一項網絡服務。我的猜測是你正在獲取位置更新,但是調用reverseGeocodeLocation失敗。您應該通過代碼設置斷點和跟蹤來查看發生了什麼。

+0

那麼,有沒有得到一個方法緯度和經度座標,而無需蜂窩或WiFi數據的? – user717452

+0

標準位置服務應該在沒有網絡/數據連接的情況下工作。請注意,如果您通過啓用也禁用位置服務的飛行模式進行測試。您可以在創建反向地理代碼請求並查看值之前插入一箇中斷點來測試此內容。 –

+1

即使沒有互聯網連接,您使用'CLLocationManager'獲取用戶位置的當前代碼也應該可以工作。除非您有網絡連接,否則對'reverseGeocodeLocation'的調用將不起作用。 –