0

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

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

CLLocation *location = [[self locationManager] location];

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

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

谢谢

4

2 回答 2

2

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

于 2009-09-06T07:18:54.630 回答
0

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

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

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

于 2009-09-06T08:08:38.110 回答