【问题标题】:Polygon fill not apparent?多边形填充不明显?
【发布时间】:2012-05-24 16:15:29
【问题描述】:

如果我创建一个带有点的多边形层:[{"lat":51.509,"lng":-0.08},{"lat":51.503,"lng":-0.06},{"lat":51.51,"lng":-0.047},{"lat":"51.500","lng":"-0.039"}],我会得到如下渲染的东西:

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

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

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

【问题讨论】:

  • 真的很有趣的问题。 FWIW(这可能并不多)我似乎想为每组点分配一个 ID 号,然后将这些点分为两个列表:一个按纬度排序,另一个按长。那样的话,似乎有些东西可能会出现。只是大声思考。
  • 我也在考虑类似的思路,例如从最外面的点创建一个多边形(找到 N/S/E/W 大多数点,然后查看其他点是否落在该边界内或者是边缘的交点)。只是需要尝试一下,希望有一个更简单的解决方案:)
  • 第二个多边形并不简单。也许你想要的实际上是你的点的凸包。我将此添加到下面的答案中。

标签: javascript maps leaflet


【解决方案1】:

我对您显示的多边形感到非常困惑,因为它似乎与您的坐标不匹配,所以我将它们放入传单中并得到了这个。

这对我来说似乎是正确的行为。允许多边形中的线相交。因此,Leaflet 或 Google Maps 没有问题。这就是定义多边形的方式。换句话说,多边形不仅由一组点定义,还由点的顺序定义。

在我看来,您想要的是包含所有点的最小 simple polygon(非相交多边形)。您可以重新排序点以获得此信息。但是我不知道有任何算法可以解决这个问题,但this answer 似乎表明问题是 NP 难的。我不是这方面的专家,所以也许其他人可以提供帮助,或者您可以尝试在 Maths 或 GIS stackexchange 中提问。

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

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

【讨论】:

  • 有趣的是,如此简单的问题如何有如此艰难的解决方案。
猜你喜欢
  • 2013-04-20
  • 1970-01-01
  • 2014-02-03
  • 1970-01-01
  • 1970-01-01
  • 2014-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
相关资源
最近更新 更多