检测"不太可能"应用程序中类似于Google位置记录的位置

时间:2015-07-03 12:13:09

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

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

result sample

正如您所看到的,有些问题:有时位置非常不准确,可能是由于手机切换网络。我想摆脱那些糟糕的地点",以显示一条干净的路径,而我还没想出怎么做。

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

从人的角度来看很明显,不幸的是我的计算机还没有想到这一点。

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

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

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

example circle

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

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()的别名。因为我懒惰。

这很好用!