为什么Mobile Safari中的Geolocation方式不如本机App中的位置准确?

时间:2011-07-22 12:59:45

标签: iphone html5 web-applications geolocation

我正在使用Geolocation API(通常称为“HTML5 Geolocation”)来获取用户的当前位置。如果移动(每秒检查一次),它会自动更新。主要针对iPhone(目前已经过测试),但也适用于其他移动设备。你可以在这里看到一个例子:

http://jsbin.com/uyoyey/

在我测试(外部)时,您可以在管道后面的每一行中看到的精度大约为3000(米)。这显然很糟糕。我的iPhone上的原生地图应用程序更精确。大约10到30米(通过查看地图和我站在哪里。在另一个应用程序中检查长值和纬度值也可以提供更准确的数字。

当我现在切换回Safari时,精确度会跳至10到30,但会在一秒后恢复到3000.

问题:

  1. 你能复制一下这种行为吗?
  2. 为什么这个地方到目前为止一直没有?
  3. 通过Geolocation访问GPS数据和CLLocationManager(我认为本机应用程序使用)之间有区别吗?
  4. 谢谢!

    更新1:
    在其他地方(大城市)进行测试时,我得到的结果更准确,但我现在想知道原生应用程序是否也使用动态跟踪来更新位置。这可以解释为什么地图应用程序可以跟踪我的步骤,而Safari无法识别它们。

    更新2(03.08.11):
    在与Peter-Paul Koch的电子邮件对话中,他写道Safari主要使用wifi进行地理定位以延长电池续航时间。这可以解释这些差异 我仍然不完全确定发生了什么。

2 个答案:

答案 0 :(得分:4)

旧:以下是 getCurrentPosition 功能的测试结果,在Android 2.2,iOS4和iOS5上关闭了wifi。

在Android浏览器和iOS 4 Safari上,我的GPS准确度达到1000米。但是在iOS 5 Safari上,我能够达到5米的精度。似乎GPS在iOS 5上有所改进,但它只是市场的一小部分。总的来说,开发依赖于精确GPS读取的网络应用程序仍然不太好。

我在测试过程中发现的东西 - 在大约70次调用getCurrentLocation后,android浏览器GPS停止响应。这可能是设备特定的问题,但它是基于浏览器的GPS功能中的另一个不可靠的因素。

更新:我正在使用 watchPosition 函数调用进行测试,它可以在Android和iOS4上生成更准确的结果。它的出路......示例代码:http://jsbin.com/ugebif/3

答案 1 :(得分:2)

  1. 我不能,但只是因为懒惰:)

  2. 我不确定,但我怀疑Safari正在使用iPhone的位置感知的非GPS部分。

  3. 同样,我不确定,但潜入HTML5时提到HTML5地理位置API允许您将PositionOptions object传递给getCurrentPosition,并且此对象有enableHighAccuracy } property。

    将其设置为true可能会使Safari使用与CLLocationManager相同的高精度定位。 (我自己也没有这方面的经验。)