javascript - 在类似于 Google Location History 的应用程序中检测 "unlikely"位置

标签 javascript google-maps google-maps-api-3 geolocation

我目前正在编写一个小型地理定位应用程序,与 Google Location History 非常相似. Android 手机定期将其位置发送到服务器,然后我可以在 map 上显示它们。我使用 JavaScript API 3,它运行良好。然而……

result sample

如您所见,出现了问题:有时位置非常不准确,可能是由于电话交换网络。我想摆脱那些“坏位置”,以显示一条干净的路径,但我还没有想出该怎么做。

如何检测位置是否明显错误?

从人类的 Angular 来看这是很明显的,不幸的是我的计算机还没有那样想。

  • 一种解决方案是使用 google.maps.geometry.spherical 中的函数 computeHeading(from:LatLng, to:LatLng) 来检测非常锐利的情况 Angular 快速连续并相应地采取行动;然而,我真的不知道我应该怎么做,因为每次检查最后五个点似乎有点低效......特别是因为我有几千个点要处理。

  • 另一件事可能是估计行驶速度,并忽略涉及突然和不切实际的加速的点。

  • 也许我可以检查该点是否在他的邻居定义的区域内。假设每个位置都应该介于前一个和后一个之间,这似乎是合理的,如下例所示。

example circle

如有任何帮助,我们将不胜感激。

最佳答案

所以我决定采用我想到的第三种方法:测试标记是否在由另外两个标记定义的圆内。基础几何,勾股定理。这是我的代码:

function isLikely(testedPos, pos1, pos2) {
    var hypothenuse = calcDistance(pos1, pos2);
    var side1 = calcDistance(testedPos, pos1);
    var side2 = calcDistance(testedPos, pos2);
    if (hypothenuse*hypothenuse*1.2 >= side1*side1 + side2*side2)
        return true;
    else
        return false;
}

calcDistance 只是 google.maps.geometry.spherical.computeDistanceBetween() 的别名。因为我很懒。

效果很好!

关于javascript - 在类似于 Google Location History 的应用程序中检测 "unlikely"位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31206599/

相关文章:

javascript - 引导日期选择器 : how to close only when clicking outside

javascript - 追加 div 并向右滚动

google-maps - 运行一次后如何 "disable"javascript函数

javascript - 需要在infowindow中添加 "directions to here"链接

javascript - 如何将formarray传递给其他组件

javascript - 如何正确制作计数器 AngularJS

r - 在 Shiny 应用程序中使用 googleway 绘制航点路线

google-maps - Ionic 3 Google map - map 不显示在 android 上

javascript - Google map 距离 API 在 React 中未定义

javascript - 如何删除绘图层菜单选项?