在没有互联网的情况下使用 iPhone GPS 更新用户位置

Posted

技术标签:

【中文标题】在没有互联网的情况下使用 iPhone GPS 更新用户位置【英文标题】:Updating user location using iPhone GPS without internet 【发布时间】:2013-06-24 07:16:18 【问题描述】:

即使没有可用的互联网,我也需要获取用户位置并获取纬度和经度。

现在我已经实现了 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 即使没有互联网,我们也可以获取位置。

知道如何实现吗?

提前致谢。

【问题讨论】:

如果你在晴朗的天空下,你可能会得到位置,因为你的 GPS 接收器直接访问 GPS,你不需要任何互联网。但是,如果您在任何屋檐下,那么 GPS 接收器无法直接访问 GPS,那么它会使用您的互联网来定位您。 你的意思是说通过使用上述相同的方法我可以使用 GPS 更新用户位置?? 【参考方案1】:

GPS 不需要使用互联网进行数据交换,但它基本上有两个缺点:

    如果您最近没有使用它需要很长时间才能获得位置(这是 由于卫星搜索) 在建筑物内或街道太小的地方不起作用 建筑物之间(这在意大利经常发生)

另一种不需要数据交换的方式是基于手机信号塔的位置,但您的设备当然应该安装手机芯片。

从您的代码中,我看到了应该尽快修复的三件事。

有时第一个位置被缓存,它并不代表 实际位置 最好在收到 有效坐标,这意味着:未缓存,水平精度 >=0 且水平精度符合您的要求,

获取位置的委托方法已被弃用(取决于您的 部署目标)。这是前两个的小sn-p 分:

-(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;
    

【讨论】:

哦,我可以解决这个问题。但是,如果我没有互联网连接,那么它会立即调用 - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error 。在这种情况下该怎么办?

以上是关于在没有互联网的情况下使用 iPhone GPS 更新用户位置的主要内容,如果未能解决你的问题,请参考以下文章

在没有互联网的情况下使用 Javascript 获取 GPS 位置 [重复]

我们可以在没有互联网而只有 GPS 的情况下获得纬度和经度吗?

如何在没有互联网的情况下仅使用 GPS 在 android 中获取位置

在没有互联网访问的情况下查找国家/地区的 GPS 坐标

react native - 在没有互联网连接的情况下获取 gps

检查gps在iphone中是不是可用