2015-11-03 20 views
0

我有一个网络应用程序,允许用户创建一个有氧锻炼,他们可能会或可能不会实际移动。他们可以在跑步机外面或跑步机上创造“跑步”。无论哪种方式,都会自动启用地理定位。HTML5地理位置:衡量何时不移动

但我只显示屏幕上的距离,如果他们移动了至少0.25英里。我自己测试过这个问题,问题是地理位置告诉我即使不是我也会移动!

今天晚上我在椭圆机上玩了32分钟,我的应用程序告诉我我已经移动了1.15英里。

如果我在实际移动时测试应用程序(例如在汽车,自行车等中),地理定位可以正常工作。只有当我不移动,我有问题。

其他人面对这个问题?是否有防止它的黑客? 我使用Android版Chrome浏览器。

回答

0

嗯,我已经想出了我自己的解决方案来解决这个问题。我相信这不是完美的,但它似乎运作良好。这是部分基于这个优秀的文章...

Getting the best single location

对于我的web应用程序,我用一个阵列来捕捉50纬度/经度与小于11米的精确度。捕捉第50个坐标后,我抓住下一个纬度/ lng作为我的当前位置。我基本上假设在检查了50个坐标精度好于11米的坐标后,我应该有一个非常好的主意,我在哪里。

当检查室内WiFi(例如在跑步机上的健身房)的坐标时,精确度很少会接近11米,并且阵列要么没有填满,要么填充半小时左右。即便如此,到那时,我的位置非常稳定,而且当我没有真正移动时,应用程序不会计算距离。

当外部使用手机信号塔时,阵列将在不到30秒的时间内正常填充50个坐标。这意味着我失去了人员移动的前30秒。但是,如果你正在步行或骑自行车,那真的不会错过很多。最后,我的距离测量结果可能会在一英里左右。我可以忍受这一点。

我学到的最大教训是,HTML5地理定位的“getCurrentPostion()”基本上毫无价值。该方法只是简单地将lat/lng坐标从手机中取出,这通常是关闭的。在我的代码中,我调用“updateLocation()”50次来收集坐标。最后,这更准确。

花点时间阅读上面提出的文章。你会学到很多。