navigator.geolocation 和 iphone 的缓存问题
Posted
技术标签:
【中文标题】navigator.geolocation 和 iphone 的缓存问题【英文标题】:navigator.geolocation and cache problem with iphone 【发布时间】:2011-09-04 16:26:06 【问题描述】:我有一个网站,用户可以在其中进行签到,因此他们的位置将被发送到服务器保存并在谷歌地图上显示坐标...
我正在用我的 iphone 对其进行测试,我注意到当网页请求位置时,iphone 会激活 gps 以检索坐标……这是真的吗? (显然我是使用 3G 而不是 WIFI)
好的,它运作良好,但我注意到坐标有很大的误差或与上次签到时相同(但地点不一样!)
所以,我认为我的 iphone 缓存了上次签到的旧坐标... 有可能吗?
如何在签入前使用 jquery/javascript 清除缓存? 为什么使用gps的错误如此之大? (我还指定了一个减少错误的参数!)
非常感谢! 恩里科
【问题讨论】:
【参考方案1】:Geolocation API spec 有许多与准确性相关的选项。看看吧。
您可以指定修复的最大年龄(规范允许缓存),您愿意等待设备找到自己的时间,以及您是否希望位置是“高精度”(它是 不默认)。
【讨论】:
是的,我指定了高精度,但我不知道其他选项...是否有防止坐标缓存的选项?谢谢! 因此,如果我在 getPosition 调用中添加“maxiumim age”选项并将其设置为较低的值,我会阻止旧位置缓存吗?如果是真的我解决了!如果有人对此有所了解,请告诉我...谢谢! @Enricosoft 实际上,规范说maximumAge
默认为 0 ——如果你不指定它,你永远不会得到缓存的结果!但是,可能值得尝试将maximumAge
设置为 0,以防 iPhone 不符合规范。
@Enricosoft 您的“解决方案”是一个损坏的链接。如果解决方案不是给定的答案之一,您可以将其发布为您自己的答案吗? (或者,作为您问题的更新。)【参考方案2】:
众所周知,手机 GPS 的不准确。我相信 iPhone 使用 GPS 和三角测量来精确定位您的位置,但它仍然存在很大的误差。
要清除 iPhone 上的 Safari 缓存,请启动“设置”应用,选择 Safari,然后选择清除缓存。
【讨论】:
我认为Enricosoft的意思是缓存的位置,与浏览器的缓存是分开的。 真的吗?好吧,但是像谷歌地图或其他类似的应用程序并不是不准确的......从网页或应用程序获取坐标有什么不同?是的,我的意思是缓存的位置,而不是浏览器缓存...存在清除它的方法吗?谢谢! 嗯,我有 3GS,也许 iPhone 4 更好。对我来说,地图应用程序经常让我走在距离我实际行驶的道路 100 英尺或更远的道路上。我还认为地图之类的应用会花费更多时间来确定您的位置并对数据进行平均处理,因此它存在的时间越长,它就会变得越准确。以上是关于navigator.geolocation 和 iphone 的缓存问题的主要内容,如果未能解决你的问题,请参考以下文章
navigator.geolocation.getCurrentPosition 在 firefox 和 chrome 之间返回不同?
navigator.geolocation.getcurrentPosition() 未获取纬度和经度值
使用 navigator.geolocation 获取地理位置
Cordova geolocation navigator.geolocation.getCurrentPosition 错误的窗口访问位置