2013-06-24 77 views
1

即使沒有互聯網可用,我也需要獲取用戶位置並獲取經度和緯度。使用iPhone GPS無需互聯網更新用戶位置

現在我已經實現CoreLocation方法: -

-(void)updatestart 
    { 
     // Current location 
     _locationManager = [[CLLocationManager alloc]init]; 
     _locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
     _locationManager.delegate = self; 
     [_locationManager startUpdatingLocation]; 
    } 

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error 
{ 
    NSLog(@"didFailWithError: %@", error); 
    UIAlertView *errorAlert = [[UIAlertView alloc] 
           initWithTitle:@"Error" message:@"Failed to Get Your Location" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [errorAlert show]; 
} 
- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
      fromLocation:(CLLocation *)oldLocation{ 

    [_locationManager stopUpdatingLocation]; 

    NSLog(@"%f",_locationManager.location.coordinate.latitude); 
    NSLog(@"%f",_locationManager.location.coordinate.longitude); 
} 

和我收到的位置更新,但如果我們有互聯網連接,這僅適用。

我想使用iPhone GPS我們可以取得位置,即使沒有互聯網。

任何想法如何實現?

在此先感謝。使用Internet

+0

如果你在晴朗的天空去,因爲那麼你的GPS接收機的GPS直接訪問,你不需要有任何互聯網你可能得到的位置。但是,如果你在任何屋頂下,GPS接收器無法直接訪問GPS,那麼它使用你的互聯網來找到你。 – Ashim

+0

你的意思是說,通過使用上述相同的方法,我可以使用GPS更新用戶位置? – AtWork

回答

3

GPS並不需要數據交換,但它基本上由兩個缺點:

  1. 它需要很長的時間來獲得位置,如果你最近沒有使用它(這是 由於衛星搜索)
  2. 並不建築物或者街道建築物之間太小 (這發生在意大利很多)

的另一種方式,它不需要進行數據交換內部工作,是基於CEL位置升塔,但當然你的設備應該安裝蜂窩芯片。

從你的代碼中,我看到三件事情應該儘快解決。

  • 有時第一位置被緩存,它並不代表 實際位置
  • 這將是最好停止位置管理器,當您收到 有效協調,這意味着:不緩存,與水平精度> = 0且水平精度符合您的要求,
  • 取消位置的委託方法(取決於您的 部署目標)。下面是前兩個 點的小片段:

    -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{ 
    
        CLLocation * newLocation = [locations lastObject]; 
        if (newLocation.horizontalAccuracy < 0) { 
         return; 
        } 
        NSTimeInterval interval = [newLocation.timestamp timeIntervalSinceNow]; 
        if (abs(interval)>20) { 
         return; 
        } 
    } 
    
+0

Ohke我可以解決這個問題。但是,如果我沒有互聯網連接,那麼它會立即調用 - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)錯誤。在這種情況下該做什麼? – AtWork