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

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

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

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

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

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

谢谢

【问题讨论】:

    标签: iphone geolocation gps location


    【解决方案1】:

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

    【讨论】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-21
      • 1970-01-01
      相关资源
      最近更新 更多