【发布时间】:2018-08-29 11:49:47
【问题描述】:
我目前正在构建一个网络应用程序(在 Polymer 中使用 Mapbox),用户可以在其中查看地图上的特色路线并步行。他们问我是否可以添加一个按钮(开始/停止)来记录他们的活动并计算步行的公里数。我构建它的方法是将每个新的地理点存储在位置更改事件 (navigator.geolocation.watchPosition) 上,并计算所有点之间的距离并将它们相加。
现在真正的问题
可能会有用户忘记再次单击停止按钮。如果发生这种情况,应用程序将继续向我的服务器发送数据。这将导致不必要的数据被推送到数据库。
现在我试图找到解决方案:
选项#1
我遇到了使用Page Visibility API 在浏览器中检查活动选项卡的选项。通过这种方式,我可以自动停止/开始跟踪。
if (!document.hidden) {
// resume tracking
} else {
// stop tracking
}
但是,我的应用程序的用户通常会锁定他们的屏幕,这也会停止跟踪,因为visibilityState 将是hidden。
选项 #2 我的客户提供了在 x 小时后自动停止计时器的解决方案。然而,这听起来并不直观,因为这仍然会导致奇怪的公里数。
选项 #3 如果您距离特色路线超过 x 米,则自动停止跟踪步行距离。然而,这需要相当多的计算。
选项 #4 跟踪所有用户活动。例如。在地图上捏、点击、缩放等,并在 30 分钟无活动后停止跟踪
我应该如何设计这个应用程序以确保跟踪有意义?
【问题讨论】:
-
使用 ionic 制作原生的 webapp。只有这样的框架才能解决这个问题。
标签: web-applications geolocation polymer mapbox visibility