这是我的情况;我已经构建了一个非常简单的网络应用程序,它可以查找用户位置并将其绘制在 Google 地图上。这是我的代码: http: //pastebin.com/d3a185efd
当我测试它时,我的位置被检测为距离我实际站立的位置 >= 500 米。
但
当我打开 Google Maps 或 Gowalla 时,我的位置是否正确在 20 米以内?
所以我的问题是:原生 iPhone 应用程序是否受益于比网络应用程序更高的准确率?
如果是这样,为什么?
这是我的情况;我已经构建了一个非常简单的网络应用程序,它可以查找用户位置并将其绘制在 Google 地图上。这是我的代码: http: //pastebin.com/d3a185efd
当我测试它时,我的位置被检测为距离我实际站立的位置 >= 500 米。
但
当我打开 Google Maps 或 Gowalla 时,我的位置是否正确在 20 米以内?
所以我的问题是:原生 iPhone 应用程序是否受益于比网络应用程序更高的准确率?
如果是这样,为什么?
根据规范,webapp 地理定位应该使用在任何情况下最有效的定位方法——所以理论上,人们会假设它在可用时使用 GPS。rohit 在“最佳答案”中链接的讨论对我来说似乎没有结论 - 这是另一个,有人向您报告了类似的问题,其他用户声称获得准确的 gps 数据(向下滚动到 9 月 26 日至 28 日的评论):
http://www.thecssninja.com/javascript/geolocation-iphone
但看起来地理定位的东西仍然是错误的。我怀疑你的问题基本上是,一些错误。
根据以下链接,我相信您是通过塔三角测量而不是使用 GPS 在网络应用程序中获取坐标。我真的怀疑GeoIP能否给出500米内的坐标。
地理位置 API 允许使用高精度参数。
http://dev.w3.org/geo/api/spec-source.html#position_options_interface
(但使用额外的电池,所以可能最好稀疏使用)
你测试过吗?
布尔值:启用高精度
我认为您会得到不同的结果,因为您忽略了时间方面。GPS 使用大量电池,仅在命令下启动。
HTML5 getCurrentPosition 会在 GPS 有机会准确“定位”您的位置之前拍摄坐标快照。另一方面,谷歌地图应用程序启动并观察你的位置,准确性随着时间的推移而增加(你都知道标记是如何移动的)。HTML5 也支持这种看位置的功能。
边注!根据我在 iPhone 上的经验,该设备实际上会存储您的位置一段时间,这意味着如果我启动 Google 地图并让它“锁定”我的位置,关闭它然后启动我的 web 应用程序并使用 getCurrentPosition 我得到同样准确的读数。
准确性就是让 GPS 发挥作用。
我认为 webapp 依赖于 geoip 服务(尽其所能......)将您的 IP 地址转换为 GPS 坐标。例如:服务前
然而,这种检索坐标的方法不如使用 GPS 设备(例如 3G 或 3Gs iphone 中包含的那个)的“经典”方法来真正检索您的实际位置,而不是像地理信息服务。
更新:例如,在笔记本电脑上使用谷歌地图时会使用 GEOIP,但也许您的问题是:“当我在网页中使用 HTML 5 位置对象时,它是来自 GPS 硬件还是来自 geoip 服务?”。这我真的说不出来,我会说它使用 geoip 服务而不是 GPS 硬件,但我不是 100% 确定......
该代码没有显示您从哪里获得位置 - 您使用的是 Navigator 和 Geolocation 对象吗?
对于 google geo api,它首先尝试通过设备 gps 查找您的位置,如果失败则进行单元三角测量(虚拟 gps)如果失败则尝试使用 wifi mac 和 ip 地址,最后尝试是使用客户端 IP 获取他的地点