我正在使用Geolocation API(通常称为“HTML5 Geolocation”)来获取用户的当前位置。如果移动(每秒检查一次),它会自动更新。主要针对iPhone(目前已经过测试),但也适用于其他移动设备。你可以在这里看到一个例子:
在我测试(外部)时,您可以在管道后面的每一行中看到的精度大约为3000(米)。这显然很糟糕。我的iPhone上的原生地图应用程序更精确。大约10到30米(通过查看地图和我站在哪里。在另一个应用程序中检查长值和纬度值也可以提供更准确的数字。
当我现在切换回Safari时,精确度会跳至10到30,但会在一秒后恢复到3000.
问题:
谢谢!
更新1:
在其他地方(大城市)进行测试时,我得到的结果更准确,但我现在想知道原生应用程序是否也使用动态跟踪来更新位置。这可以解释为什么地图应用程序可以跟踪我的步骤,而Safari无法识别它们。
更新2(03.08.11):
在与Peter-Paul Koch的电子邮件对话中,他写道Safari主要使用wifi进行地理定位以延长电池续航时间。这可以解释这些差异
我仍然不完全确定发生了什么。
答案 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)
我不能,但只是因为懒惰:)
我不确定,但我怀疑Safari正在使用iPhone的位置感知的非GPS部分。
同样,我不确定,但潜入HTML5时提到HTML5地理位置API允许您将PositionOptions
object传递给getCurrentPosition
,并且此对象有enableHighAccuracy
} property。
将其设置为true
可能会使Safari使用与CLLocationManager
相同的高精度定位。 (我自己也没有这方面的经验。)