如何在传单中对LatLng pointList进行排序

时间:2015-07-06 19:54:23

标签: javascript sorting leaflet polyline

我有一个像以下

的pointList
var pointList=[
new L.LatLng(lat1,lon1),
new L.LatLng(lat2,lon2),
new L.LatLng(lat3,lon3),
new L.LatLng(lat4,lon4),
new L.LatLng(lat5,lon5),
new L.LatLng(lat6,lon6),
new L.LatLng(lat7,lon7)
];

我想使用这些点绘制polyLine。我使用以下代码绘制polyLine

L.Polyline(pointList, {
    color: color,
    weight: 10,
    lineCap:"square",
    lineJoin:"bevel",
    opacity: 0.6,
    smoothFactor: 1
    });

但是我看到多个多线从一个点到另一个点发散。这看起来很奇怪。请参见下图。 polylines

我想如果我可以对点进行排序,那么我只能获得一行而不是多行。你能告诉我如何对这些点进行排序吗?或者有没有简单的方法来绘制折线而不是多个分叉线?

我附上jsfiddle给你一个我想做的事情。从点列表中删除第一个条目并将其移到底部。然后该线看起来逐渐进展。我的目标就是这样。

1 个答案:

答案 0 :(得分:1)

Polyline是在您传递的点之间以及传递它们的顺序之间构建的。

从您发布的图片中我猜您正在尝试将某些物体的痕迹想象成汽车。您应该使用某种时间戳或增量标识符来订购点。

否则,您可以编写一个从第一个点开始的简单算法,并计算到所有其他点的距离并选择最接近的算法,然后将其添加为第二个点,依此类推。