GPS位置需要几秒钟才能检索

Posted

技术标签:

【中文标题】GPS位置需要几秒钟才能检索【英文标题】:GPS Location takes a few seconds to be retrieved 【发布时间】:2010-11-25 23:39:17 【问题描述】:

我编写了一个使用 iPhone 的相对 GPS 位置的 iPhone 应用程序。

我在用户界面中有一个按钮,可以进行反向地理定位(根据纬度和经度提取街道名称)。唯一的问题是

检索到的位置对象
CLLocation *location = [[self locationManager] location];

如果用户过早点击按钮,则为 nil。我在 viewDidLoad 中初始化 LocationManager,因为我不想创建对象,除非用户实际加载此屏幕。我也立即开始更新位置...但如果用户加载屏幕并立即点击 GPS 按钮,位置仍然为零。

问题来了:您是否知道 CLLocationManager 需要多少时间来检索位置?

谢谢

【问题讨论】:

【参考方案1】:

手机可能需要几秒钟的时间才能检索到这些数据。为了可用性,您可能需要停用按钮控件。找到位置后触发NSNotification。注册您的视图控制器以侦听此通知,该通知会触发重新激活按钮控件的选择器。

【讨论】:

干杯。一旦位置可用就显示按钮听起来是个好主意。无论如何,用户都可以选择手动输入街道名称。谢谢! 请记住,核心位置通常会返回一个不太准确(有时甚至是缓存)的位置,因为它会根据您指定的精度设置归零正确的 GPS 位置。【参考方案2】:

获取位置修复取决于您想要的准确度,以及它之前是否有某种位置数据、天气如何、您是在室内还是室外……真的没有回答。如果您转到地图应用程序并单击“定位”按钮,那么您会注意到在不同的情况下,您开始解决过程后需要一段时间。

当有数据时回调会告诉你;您不应该通过轮询或假设即时访问来获得它(或者更糟糕的是,在您希望找到数据之前阻止应用程序)。听起来这里的关键问题是您的按钮是同步执行请求而不是动态的;换句话说,无论你想出什么值 'n',竞争条件都会在某个时候失败。

更改您的代码,使按钮在后台调用位置获取,然后随后弹出信息或稍后填写表单。

【讨论】:

以上是关于GPS位置需要几秒钟才能检索的主要内容,如果未能解决你的问题,请参考以下文章

需要 android 活动才能等到获得 GPS 位置

是否需要 Google Play 服务才能在 Android 手机上查找当前 gps 位置?

android,检查gps位置是不是接近/接近某个位置

iPhone应用程序:集成基于位置的服务

长时间关闭智能手机时检索上次已知位置

在 GPS 芯片长时间处于活动状态后,Android 设备需要重启/重启才能获取 GPS 位置