【问题标题】:phonegap geolocation, Code 3 - timeout expired keeps popping up on some Android Devicesphonegap geolocation, Code 3 - timeout expired 不断在某些 Android 设备上弹出
【发布时间】:2013-04-22 04:31:26
【问题描述】:

我正在使用 PhoneGap API 进行地理定位。我已将 enableHighAccuracy 选项设置为“true”。代码 3,超时过期选项不断弹出,但仅在某些 android 设备上,并且在使用应用程序时不止一次。

请帮帮我...为什么会这样,它只在某些 android 设备上失败。如果我将精度设置为 false,那么在检索坐标时我会得到多少差异...

【问题讨论】:

    标签: android cordova geolocation


    【解决方案1】:

    哎呀,在这里发现了同样的问题。希望有比要求用户更改其 GPS 设置更好的方法。 三星盖乐世 III

    (如果没有此选项,“使用无线网络查找位置”失败时有效)

    【讨论】:

      【解决方案2】:

      好的,这里是如何解决问题的:

      1. 添加超时并设置 enableHighAccuracy:

        navigator.geolocation.getCurrentPosition(onSuccess, onError, {timeout: 10000, enableHighAccuracy: true});
        

        在某些模拟器中,您需要将 enableHighAccuracy 设置为 false,所以如果仍然不起作用,请尝试。

      2. 在 Android 中,模拟器不读取 GPS 值,因此我们需要通过命令行发送它们。我们需要在模拟器运行的端口中启动一个telnet会话(你可以在模拟器窗口标题中查看端口,开头的数字,在我的例子中是5554):

        telnet localhost 5554
        

      然后运行命令

          geo fix -122.4 37.78
      

      如果您关闭应用程序,您需要重新发送地理位置,所以如果它不起作用,只需在打开应用程序后,在超时事件触发之前运行geo fix 命令即可。

      【讨论】:

      • 更大的“超时”和“enableHighAccuracy”解决了我的问题。谢谢!
      • 我遇到了同样的问题。将enableHighAccuracy 设置为false 并重新启动模拟器(来自Android SDK)解决了我的问题。
      【解决方案3】:

      设法用下面的代码解决了我的问题:

      var options = {maximumAge: 0, timeout: 10000, enableHighAccuracy:true};
      navigator.geolocation.getCurrentPosition(onSuccess, onError, options);
      

      三星 Galaxy 手机似乎不喜欢缓存 gps 位置。

      【讨论】:

      • @GeorgeL:先生,我尝试过无法正常工作我收到消息:控制台中的“超时已过期”错误告诉我如何解决?
      【解决方案4】:

      我在三星 Galaxy Note II (Android 4.1.1) 上遇到了同样的错误。出于某种原因,当位置设置下的“使用无线网络”打开时,它可以工作,但如果它关闭,则会出现代码 3 错误。这在 Nexus 7 (4.2.2) 上没有发生。

      【讨论】:

      • 谢谢,它解决了我吓坏了的问题。这是因为设备有时不会自动使用高精度,我们需要手动设置。
      猜你喜欢
      • 2014-04-29
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-17
      • 1970-01-01
      相关资源
      最近更新 更多