如何在传单中对 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 我想做什么。从点列表中删除第一个条目并将其移至底部。然后这条线看起来在逐渐前进。我的目标就是这样。
折线是在您经过的点之间按照您经过它们的顺序构建的。
从你发布的图片来看,我猜你是想想象一些物体的痕迹,比如汽车。您应该有某种时间戳或增量标识符,可用于对点进行排序。
否则,您可以编写一个简单的算法,从第一个点开始计算到所有其他点的距离,然后选择最近的一个并将其添加为第二个点,依此类推。
我有一个如下所示的点列表
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 我想做什么。从点列表中删除第一个条目并将其移至底部。然后这条线看起来在逐渐前进。我的目标就是这样。
折线是在您经过的点之间按照您经过它们的顺序构建的。
从你发布的图片来看,我猜你是想想象一些物体的痕迹,比如汽车。您应该有某种时间戳或增量标识符,可用于对点进行排序。
否则,您可以编写一个简单的算法,从第一个点开始计算到所有其他点的距离,然后选择最近的一个并将其添加为第二个点,依此类推。