如何在一个顺序中遍历JavaScript中的纬度和经度数组?

时间:2014-05-07 08:52:04

标签: javascript math coordinates

我有点像

这样的数组
 aa = [ [1,2], [1,2],[2,1], [2,2], [3,1], [3,2] ]

如何在订单中遍历这些点。小提琴:

jsFiddle Link

我从Sort latitude and longitude coordinates into clockwise ordered quadrilateral那里得到了一些想法,但没有成功

更新:我认为如果我们添加更多描述,例如从A到F的遍历,从东到西方向,如下图所示。在这种情况下,我认为我们可以按以下方式排序(如图所示) enter image description here

2 个答案:

答案 0 :(得分:0)

我建议先订购积分。 取最小值作为参考点,然后使用参考距离进行排序。

    var upper = upperLeft(points);
    points.sort(function (point) {
        return -point.distance(upper);
    });
    console.log(points);

这将按顺序反转它们。 删除 - 从F到A开始的符号

答案 1 :(得分:0)

如果您仔细阅读答案,他们承认这不是最佳途径。它只是跟随选定点的弧,并按顺序选择弧和点之间的任何内容。所以想象一下钟摆摆动,钟摆接触的任何东西都按顺序选择。

这不是四边形路径。

要制作四边形路径,如果不是从A点调用方法到所有其他点,它可能会起作用,您可以递归地选择仅选择第一个点。

基本上,如果不是从A点到达所有点,而是在递归中使用算法,并且在选择第一个点之后,再次使用新点调用它。所以每个点都是顺时针最远离前一点。然后在每次通话后,从可用点列表中删除选定的点。

然而,只有在问题很简单的情况下,这才有效。这意味着您不必缩进形状来选择所有点。因此,如果您的点位于最外点形状的内部,那么解决方案将变得非常复杂。

需要选择一个缩进点,然后反转算法。然后递归地做。