我编写了一款使用iPhone相对GPS位置的iPhone应用程序。
我在用户界面中有一个按钮,用于反向地理位置(拉动街道名称基于纬度和长度)。唯一的问题是由
检索的位置对象CLLocation *location = [[self locationManager] location];
如果用户过早点击按钮,则为零。我正在viewDidLoad中初始化LocationManager,因为除非用户实际加载此屏幕,否则我不想创建对象。我也开始直接更新位置......但是如果用户加载屏幕并立即点击GPS按钮,则位置为零。
问题在于:您是否知道CLLocationManager需要多长时间来检索位置?
由于
答案 0 :(得分:2)
手机可以用几秒钟来检索这些数据。为了便于使用,您可能需要停用按钮控件。找到位置后触发NSNotification
。注册视图控制器以侦听此通知,该通知会触发重新激活按钮控件的选择器。
答案 1 :(得分:0)
获取位置修复取决于您想要的准确度,以及它之前是否有某种位置数据,天气如何,是否在室内/室外......真的没有回答。如果您转到地图应用程序并单击“定位”按钮,那么您会注意到在不同的情况下,您将在开始解决过程后的某个时间。
回调会告诉你何时有数据;你不应该通过轮询或假设即时访问来获得它(或者更糟糕的是,阻止应用程序直到你期望找到数据)。听起来这里的关键问题是你的按钮是同步执行请求而不是动态的;换句话说,无论你想出什么样的“n”值,竞争条件都会在某些时候保证失败。
更改您的代码,以便按钮在后台调用位置获取,然后随后弹出信息或稍后填写表单。