【问题标题】:How to traverse an array of latitude and longitude in JavaScript in an order?如何按顺序遍历JavaScript中的经纬度数组?
【发布时间】:2014-05-07 08:52:04
【问题描述】:

我有一个点数组

 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,从东到西方向,如下图所示。对于这种情况,我认为我们可以按以下方式排序(如图所示)

【问题讨论】:

    标签: javascript math coordinates


    【解决方案1】:

    如果您仔细阅读答案,他们会承认这不是最佳路径。它只是从选定的点沿着弧线,并按顺序选择弧线和点之间的任何东西。所以想象一个钟摆在摆动,钟摆的杆接触到的任何东西都会按照这个顺序被选中。

    这不是四边形路径。

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

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

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

    这需要选择一个缩进点,然后反转算法。然后递归执行。

    【讨论】:

      【解决方案2】:

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

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

      这将按顺序反转它们。 去掉 - 号以从 F 开始到 A

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-22
        • 2016-03-25
        • 1970-01-01
        • 2020-03-21
        相关资源
        最近更新 更多