【问题标题】:iOS6 Mobile Safari: Accuracy and update periods of geolocation.watchPositioniOS6 Mobile Safari:geolocation.watchPosition 的准确性和更新周期
【发布时间】:2013-03-05 21:28:32
【问题描述】:

我在 iPhone4 上的移动 Safari 和 iOS6 上的 iPhone5 上遇到了一个奇怪的行为。

我想做什么

高精度准确度跟踪用户在浏览器中的位置,使用

geolocation.watchPosition({ enableHighAccuracy: true, maximumAge: 0, callback })

我面临的问题

通常情况下,当设备在室外、晴空和移动时,GPS位置的准确性和更新周期都非常好。

传递给回调的coords 对象的精度为 5 米,给出了正确的航向值,并且在移动时回调至少每 500 毫秒触发一次。

但是:有时观察的位置永远不会准确,即使我在相同的条件下(尽可能)测试它。

而且,更新周期要长得多,差不多 30 秒。

基本上,在这种情况下,HTML 地理位置无法用于准确跟踪位置。

观察

  • 这似乎发生了,当 GPS 传感器未处于“热待机”状态时,我的意思是它没有被另一个本地应用程序使用一段时间(不确定多长时间)。

  • 重新加载页面、重新允许 GPS 访问和重新初始化 watchPosition 并没有改变任何东西,仍然是精度差且更新缓慢。

  • 更改传递给watchPosition 的选项似乎没有任何作用。

  • 手动修复 1:

    • 关闭 Safari
    • 打开另一个原生应用,例如地图或 GMaps
    • 在原生应用中确定位置
    • 打开 Safari
    • GPS 位置立即准确,随后位置更新会在 500 毫秒内再次触发,并且非常准确(无需重新加载)。
  • 手动修复 2:

    • 关闭 Safari
    • 打开设置面板
    • 禁用 Wi-Fi
    • 打开 Safari
    • 同样,问题已修复(无需重新加载)

结论

当问题发生时,我查看了回调的coords对象,发现如下:

即使传递的位置距离设备的实际位置很远(> 1km),传递的accuracy 要小得多(通常为165 米)。 heading 永远不会给出。

当 iPhone 上的 WiFi 被禁用时,设置面板中会显示启用 WiFi 将提高确定您的位置的准确性(因为 AGPS 由地理编码 WiFi 网络的数据集支持)。但据我所知,如果您想在移动 Safari 中使用 GPS,这不是正确的。事实上,它的作用正好相反。

在我看来,移动 Safari 会做这样的事情来确定位置:

  • 如果 GPS 已在设备上激活/正在使用,则它使用 GPS 传感器(快速准确的位置更新)

  • 如果 GPS 之前未激活且启用了 WiFi,则设备使用其 WiFi 数据库获取位置。 (更新很慢,不准确)。它只是从一个 WiFi 位置更新到另一个位置。您可以非常清楚地看到这一点,例如如果您在联邦道路上行驶,因为您的位置大多会映射到下一个住宅区。

  • 仅当 GPS 之前未启用且 WiFi 已禁用时,移动 Safari 才会使用 GPS 来确定设备的位置(同样,快速且准确)。

问题

谁能证实我的问题和我的观察? 我在早期 iOS 版本中使用过地理定位,但之前从未遇到过这个问题。

这是移动 safari 的一个已知错误,是否有机会修复?还是我只是错过了watchPosition 的更好配置以获得更好的结果?

【问题讨论】:

    标签: javascript ios html geolocation mobile-safari


    【解决方案1】:

    很多人都描述过类似的问题,包括我自己。我在本次讨论https://discussions.apple.com/thread/4313850?start=45&tstart=0 中描述了我在第 5 页及以后的问题(作为 alstorp) 阅读并查看它是否符合您的问题。

    问题是,据我所知,Apple 尚未证实这一点。他们正在努力修复它吗?真的站在他们这边吗?它真的是一个错误吗?因此,我们不知道何时/是否会修复...

    有没有人对 iOS 6 中基于浏览器的地理位置没有问题? (即使在不同情况下进行了多次测试)。

    您是否对修复进行了广泛的测试?我的经验是,这种类型的修复在某些情况下会有所帮助,但并非总是(或长时间)。如果它们为您可靠地工作,那将是非常有趣的......

    (另请查看IOS6 geolocation watchPosition Callbacks fail iOS 6 breaks GeoLocation in webapps (apple-mobile-web-app-capable))

    【讨论】:

      【解决方案2】:

      谁能证实我的问题和我的观察?我在早期 iOS 版本中使用过地理定位,但之前从未遇到过这个问题。

      我试过 watchPosition(onGeoSuccess,onGeoFail,{enableHighAccuracy:true});在我的网络应用程序中使用我的 iPhone (iOS 7.0.2)。

      WiFi 的准确性真的很差,有时一英里。在关闭 WiFi 的情况下,准确度接近完美,偶尔会有几百英尺的差异。

      我尚未测试是否有助于让 GPS 在捕获点之间运行,或者是否最好将其关闭,直到您到达下一个捕获点并让 watchPosition() 函数稳定下来。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-15
        相关资源
        最近更新 更多