多边形填充不明显?

时间:2012-05-24 16:15:29

标签: 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"}]创建一个Polygon图层,我会得到像这样渲染的东西:

enter image description here

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

文档:http://leaflet.cloudmade.com/reference.html#polygon

使用一个简单的多边形,理想情况下,当所有最外面的坐标都是填充的边缘时,我仍然会得到这个。enter image description here

1 个答案:

答案 0 :(得分:1)

我对你所显示的多边形感到很困惑,因为它似乎与你的坐标不匹配,所以我将它们放入传单并得到它。

Polygon

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

听起来你想要的是包含所有点的最小simple polygon(非交叉多边形)。您可以对点进行重新排序以获得此点。但是我不知道有任何算法,但this answer似乎表明问题是NP难的。我不是这方面的专家,所以也许其他人可以提供帮助,或者您可以尝试在数学或GIS堆栈交换中询问。

是的,Polygon只是一个填充的PolyLine,其中第一个和最后一个点连接在一起。

查看您发布的第二个多边形,听起来像您想要的the convex hull of a finite set of points。如果这是你的问题,plenty of algorithms解决了这个问题,它们也很快。