gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:40:14 25 4
gpt4 key购买 nike

我目前正在编写一个小型地理定位应用程序,与 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com