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

How to sort a LatLng pointList in leaflet

我有一个如下所示的点列表

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)
];

我想用这些点画一条折线。我正在使用以下代码绘制折线

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

但我看到多条多段线从一点到另一点发散。那看起来很奇怪。请参见下图。

我想如果我可以对这些点进行排序,那么我只能得到一行而不是多行。你能给我任何 idea 如何对这些点进行排序吗?或者有什么简单的方法可以画一条折线而不是多条分叉线?

我附上 jsfiddle 给你 ide 我想做什么。从点列表中删除第一个条目并将其移至底部。然后这条线看起来在逐渐前进。我的目标就是这样。

折线是在您经过的点之间按照您经过它们的顺序构建的。

从你发布的图片来看,我猜你是想想象一些物体的痕迹,比如汽车。您应该有某种时间戳或增量标识符,可用于对点进行排序。

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