代码之家  ›  专栏  ›  技术社区  ›  nicktmro

GPS定位需要几秒钟才能恢复

  •  0
  • nicktmro  · 技术社区  · 15 年前

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

    我在用户界面上有一个按钮,可以反向定位(根据lat和long提取街道名称)。唯一的问题是

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

    如果用户过早点击按钮,则为零。我正在初始化viewdidload中的locationmanager,因为我不希望创建对象,除非用户实际加载此屏幕。我也马上开始更新位置…但是,如果用户加载屏幕并直接点击GPS按钮,则位置为零。

    问题来了:你大概知道CLlocationManager需要多长时间来检索这个位置吗?

    谢谢

    2 回复  |  直到 15 年前
        1
  •  2
  •   Alex Reynolds    15 年前

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

        2
  •  0
  •   AlBlue RACGAMERUP    15 年前

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

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

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