javascript - iOS6 Mobile Safari : Accuracy and update periods of geolocation. watchPosition

标签 javascript ios html geolocation mobile-safari

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

我想做什么

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

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

我遇到的问题

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

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

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

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

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

观察

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

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

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

  • 手动修复 1:

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

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

结论

当问题发生时,我查看了回调的 coords 对象并检测到以下内容:

即使传递的位置远离设备的实际位置(> 1 公里),传递的精度 也要小得多(通常为 165 米)。 heading 从未给出。

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

在我看来,mobile safari 会做这样的事情来确定位置:

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

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

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

问题

任何人都可以确认我的问题和我的观察吗? 我在早期的 iO​​S 版本中使用过地理定位,但以前从未遇到过这个问题。

这是移动版 Safari 的一个已知错误,是否有可能修复?还是我只是缺少更好的 watchPosition 配置以获得更好的结果?

最佳答案

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

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

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

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

(同时检查 IOS6 geolocation watchPosition Callbacks fail iOS 6 breaks GeoLocation in webapps (apple-mobile-web-app-capable) )

关于javascript - iOS6 Mobile Safari : Accuracy and update periods of geolocation. watchPosition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15234473/

相关文章:

javascript - Redux Form 不改变值

javascript - 添加谷歌地图 "Uncaught Type Error: Cannot read property ' 样式'为 null"

ios - 在 PageViewController 导航不工作

ios - DynamicCastClassUnconditional 与 destionationViewController

html - IE7 CSS 滚动 Div 错误

html - div 内的 Paypal 按钮没有响应?

javascript - 在 Javascript 中使用 X、Y 坐标裁剪图像

javascript - ActiveX C++ 控件 WriteFile 在尝试 4 次后失败

javascript - 使用 $httpBackend 接收二进制响应的单元测试

ios - OpenGL 与透明背景混合?