我有一个网络应用程序,允许用户创建有氧运动,他们可能或可能没有实际移动。他们可以创造一个" run"无论是在室外还是在跑步机上。无论哪种方式,都会自动为锻炼启用地理定位。
但是我只在屏幕上显示距离,如果它们至少移动了0.25英里。我自己测试了这个问题,问题是地理定位告诉我,即使我没有,我也会感动!
今晚我在eliptical机器上呆了32分钟,我的应用程序告诉我,我已经移动了1.15英里。
如果我在实际移动时测试应用程序(例如在汽车,自行车等),地理位置工作正常。只有当我没有移动时,我才会遇到问题。
其他人是否面临此问题?是否有可能阻止它的黑客攻击? 我使用Chrome for Android作为浏览器。
答案 0 :(得分:0)
我已经为这个问题提出了自己的解决方案。我确定它并不完美,但似乎运作良好。它部分基于这篇优秀的文章......
Getting the best single location
对于我的网络应用程序,我使用数组捕获50个lat / lng,精度小于11米。在捕获第50个坐标后,我抓住下一个lat / lng作为我当前的位置。我基本上假设在检查了50个坐标之后,精度优于11米,我应该知道我在哪里。
当检查室内WiFi上的坐标时(例如在跑步机上的健身房中),精度很少接近11米,并且阵列要么没有填满,要么需要半小时左右才能填满。即便如此,到那时我的位置相当稳定,当我没有实际移动时,应用程序不会计算距离。
当在室外使用手机信号塔时,阵列通常会在不到30秒的时间内填充50个坐标。这意味着我失去了人员运动的前30秒。但如果你走路或骑自行车,那真的不容错过。最后,我的距离测量可能会偏离.15英里或者这样的距离。我可以忍受。
我学到的最大教训是" getCurrentPostion()"对于HTML5地理定位基本上一文不值。该方法简单地强制将lat / lng坐标从电话中取出,这通常是关闭的。在我的代码中,我调用" updateLocation()" 50次收集坐标。最后,这更准确。
花些时间阅读上面提到的文章。你会学到很多东西。