【问题标题】:Returning inaccurate GPS coordinate using getCurrentPosition in Phonegap在 Phonegap 中使用 getCurrentPosition 返回不准确的 GPS 坐标
【发布时间】:2012-02-28 14:18:48
【问题描述】:

我正在使用需要地理位置数据的 JQuery mobile 开发 PhoneGap 应用程序。目前 getCurrentPosition() 返回的位置非常不准确,有时甚至高达一英里。该应用程序似乎正在使用谷歌的位置服务来获取位置。有什么方法可以强制应用使用 GPS 吗?

第一次发布职位时,它通常会返回旧职位(即使 maximumAge 设置为 0)。有谁知道为什么会这样?

我已经阅读了下面的地理定位 API,但没有找到任何东西。

http://dev.w3.org/geo/api/spec-source.html

【问题讨论】:

    标签: jquery-mobile cordova geolocation gps


    【解决方案1】:

    您可以尝试的几件事是确保在调用 getCurrentPosition 时将 enableHighAccuracy 参数设置为 true。

    但是,大多数 GPS 芯片需要一些时间才能为您提供准确的位置。更好的解决方案是调用 watchPosition 并等到获得 3 到 5 个结果,因为在这种情况下,您会发现准确性要好得多。然后你可以做一个 clearWatch 并使用更准确的 GPS 位置。

    【讨论】:

    • 使用 watchPosition/clearWatch 而不是 getCurrentPosition 似乎会干扰我在设备上安装的另一个 GPS 应用程序。一旦我尝试通过 watchPostion 获取位置,我的其他应用程序就会停止接收新坐标。你知道为什么会这样吗?
    • @user1014759 有点晚了,但这可能是因为你使用了相同的变量。例如,如果您使用 var onSuccess = function(position),则需要将其更改为 var theSuccess = function(position)。错误处理程序中使用的变量也是如此,例如函数 forErrors(error)。为我工作。
    【解决方案2】:

    正如其他人所写。 getCurrentPosition 不一定精确到仪表,这完全取决于 GPS 是否处于活动状态..

    getCurrentPossition 用于在 GPS 得到正确修复时快速获取搜索位置和初始位置。

    我通常这样做:

    //Initialize GPS
    navigator.geolocation.getCurrentPosition(onGPSSuccess, onGPSError, { maximumAge: 3000, timeout: 5000, enableHighAccuracy: true }); 
    navigator.geolocation.watchPosition(onGPSSuccess, onGPSError, { maximumAge: 3000, timeout: 5000, enableHighAccuracy: true }); 
    

    Thant 将获得快速发布,并且会反复调用 watch 函数来获取该位置..

    因此,如果您希望获得准确的坐标,您可以在回调函数中检查:position.coords.accuracy 以了解以米为单位的精度。

    【讨论】:

    • 感谢@Kim,您的解决方案对我非常有用
    【解决方案3】:

    这是 Geolocation API,而不是硬件 GPS 修复 - 因此您可能只能获取网络位置。 一些股票浏览器还具有邻近“功能”...例如,使用 Fennec 就可以正常工作。

    【讨论】:

      猜你喜欢
      • 2020-04-09
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多