无网络时用户位置 GPS 坐标

Posted

技术标签:

【中文标题】无网络时用户位置 GPS 坐标【英文标题】:user location GPS coordinates when no internet 【发布时间】:2013-06-24 09:48:53 【问题描述】:

对于我的应用,当设备中没有互联网连接时,我需要访问 GPS 纬度和经度坐标。我使用 CLLocation 来实现这一点。但是当我在设备位置管理器中关闭 wifi 和互联网时,会显示

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error

    NSLog(@"didFailWithError %@", error);


我得到的错误是 Error Domain=kCLErrorDomain Code=0 "the Operation could not be completed"

一旦我获得了正确的用户位置,当用户从当前位置移动时如何刷新应用程序?

我已经下载了本教程的代码http://www.vellios.com/2010/08/16/core-location-gps-tutorial/,但我得到了同样的错误。

任何人请告诉我如何在离线、没有互联网的情况下实现 GPS。 谢谢

【问题讨论】:

GPS 信息不需要网络,请确保您为您的应用启用了 GPS,有时您无法在房间内获取 GPS,请尝试在野外尝试 但是我在其他一些应用中看到 GPS 工作正常。如何为我的应用启用 GPS? 第一次使用GPS服务时,是否有弹出询问定位服务许可的alertview?或者你可以到设置页面查看 不,它没有请求许可,因为 alertview 并且我在设置中检查了我的应用程序的位置服务。 我已经下载了这个教程代码并检查我得到了类似的错误vellios.com/2010/08/16/core-location-gps-tutorial 【参考方案1】:

定位服务如何确定您的位置的基础知识 Apple iOS 使用三阶段算法来确定您的位置:

    辅助全球定位系统 (A-GPS)

    众包 Wi-Fi

    蜂窝网络搜索

这三个阶段按优先级降序使用。换句话说,iOS 首先尝试使用 GPS 卫星链接来确定您的位置。如果无法获取卫星,iOS 将故障转移到 Wi-Fi。如果您未连接到 Wi-Fi 局域网 (WLAN),则 iOS 使用手机信号塔数据。如果以上所有方法都失败,那么您会收到一条错误消息,如下图所示。

辅助 GPS (A-GPS) 缩短了 GPS 客户端设备获取卫星连接通常所需的时间。例如,当我等待 Garmin GPS 训练手表连接到卫星时,我的晨跑有时会延迟几分钟。想象一下,等待您的 iPhone 建立 GPS 连接几分钟是多么痛苦!

本质上,您的 iDevice 会缓存卫星数据的定期快照,以加快连接时间。显然,当您在室外并远离干扰源(例如高层建筑甚至车辆内部)时,您会观察到最快速的 GPS 性能。

众包 Wi-Fi 意味着您的 iDevice 不仅会再次缓存有关您当前连接的 WLAN 的信息,还会缓存有关您设备范围内的任何其他 WLAN 的信息。通过在本地存储 WLAN 服务集标识符 (SSID) 和媒体访问控制 (MAC) 地址信息,iOS 定位服务可以通过三角测量更快地确定您的位置。

这个想法是,如果 iOS 检测到您已连接到您的家庭 WLAN,并且它已经拥有该位置的全球定位坐标,则定位服务可以显示您的位置,而无需通过 GPS 连接或 Wi-Fi 三角测量。

蜂窝网络搜索再次涉及“三角测量”的概念,这次是 iOS 使用有关您附近蜂窝塔的缓存信息。顺便说一句,三角测量是一种几何原理,它通过测量与固定基线任一端的已知点的角度来确定一个点的位置。例如,iOS 可以通过测量您的 iDevice 与附近的多个手机信号塔之间的距离来估算您的位置。

【讨论】:

这是理论上的,但实际上我需要进行哪些更改才能获取用户位置?我在免费的野外空间进行了测试,但我得到了错误 locationdidfail 错误.. 检查您是否确实拥有有效的 WiFi 和 3G 连接,然后转到设置并重置您的位置服务 3) 重置您的网络设置 在 wifi 下工作正常。但是当我关闭wifi时它不起作用。 那么,您还想离线识别更改位置吗? 是的,我需要离线获取用户位置并更改位置。【参考方案2】:

你试过了吗?

[locationManager setDistanceFilter:kCLDistanceFilterNone];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];

【讨论】:

取决于离线模式的含义。在飞行模式下它不起作用。在没有 gsm 的荒野中它可以工作。在文明地区,当您没有 gprs 访问权限时,很难看到卫星。 当它进入 didUpdateToLocation 时我需要停止更新位置吗?如果我不停止更新位置,则会导致 didfailwitherror @AlexWien 我已经添加了上面的代码,但还是同样的问题。 让我们更深入地检查您的问题:- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error NSLog(@"didFailWithError %@", error); NSLog(@"code: %@", [error code]);

以上是关于无网络时用户位置 GPS 坐标的主要内容,如果未能解决你的问题,请参考以下文章

Android中QPython的位置不返回GPS坐标 - 仅“网络”

是否可以仅在网络上获取 gps 坐标

如何将 GPS 坐标发送到网络服务器?

Android 谷歌地图使用 GPS 定位而不是网络

屏幕关闭时,Android 10 会阻止网络请求和 GPS 呼叫

我无法获取 GPS 位置