Javascript 多边形填充不明显?

Javascript 多边形填充不明显?,javascript,maps,leaflet,Javascript,Maps,Leaflet,如果我创建一个点为:[{“lat”:51.509,lng:-0.08},{“lat”:51.503,lng:-0.06},{“lat”:51.51,lng:-0.047},{“lat”:“51.500”,“lng:-0.039”},我会得到这样的效果: 这不是我所需要的。我也在添加/删除点,看不到从多边形中删除相交线的方法,基本上创建一个填充形状。有人这样做了吗?我还注意到谷歌地图也有同样的问题。如果真的只是带阴影的多段线,那么真正的“多边形”有什么意义 文件: 使用一个简单的多边形,我仍然可

如果我创建一个点为:
[{“lat”:51.509,lng:-0.08},{“lat”:51.503,lng:-0.06},{“lat”:51.51,lng:-0.047},{“lat”:“51.500”,“lng:-0.039”}
,我会得到这样的效果:

这不是我所需要的。我也在添加/删除点,看不到从多边形中删除相交线的方法,基本上创建一个填充形状。有人这样做了吗?我还注意到谷歌地图也有同样的问题。如果真的只是带阴影的多段线,那么真正的“多边形”有什么意义

文件:


使用一个简单的多边形,我仍然可以得到这个结果,理想情况下,所有最外层的坐标都是填充的边缘。

我对你显示的多边形感到困惑,因为它似乎与你的坐标不匹配,所以我把它们放进传单中,得到了这个

我认为这是正确的行为。多边形中的线允许相交。所以这不是传单或谷歌地图的问题。这只是定义多边形的方式。换句话说,多边形不仅由一组点定义,还由点的顺序定义

听起来你想要的是包含所有点的最小的(非相交多边形)。您可以对点重新排序以获得此结果。然而,我不知道有什么算法可以解决这个问题,但似乎认为这个问题是NP难的。我不是这方面的专家,所以也许其他人可以帮忙,或者你可以试着问一下数学或地理信息系统

是的,多边形只是一条填充的多段线,第一个点和最后一个点连接在一起


看看你贴的第二个多边形,听起来像是你想要的。如果这是你的问题,解决这个问题的方法很多,而且速度也很快。

真是个有趣的问题。FWIW(这可能不多)我似乎想给每一组点分配一个ID号,然后将这些点集排序为两个列表:一个按lat排序,另一个按long排序。这样看来,似乎有什么东西会出现。只是大声思考。我是沿着类似的路线思考的,例如,从最外面的点创建一个多边形(找到N/S/e/W most点,然后查看其他点是否在该边界内,或者是某条边上的交点)。只需要尝试一下,希望有一个更简单的解决方案:)第二个多边形并不简单。也许你想要的是点的凸包。我在下面的答案中添加了这个。有趣的是,如此简单的问题竟然有如此艰难的解决方案。