检查哪个多边形位于内部的有效方法

时间:2013-06-20 00:20:49

标签: javascript polygon point-in-polygon

在我的JavaScript应用程序中,我有超过30多个多边形。它们的定义如下:

polygons:[
{name:'xx',bounds:[20,20,60,20,50,40,30,10...],minzoom:0,maxzoom:5},
{name:'yy',bounds:[.....],minzoom:6,maxzoom:8},
........
]

现在给出像[10,10]这样的某个点,缩放4。

检查此点位于哪个多边形的快速方法是什么?

我的第一个想法是迭代多边形,并检查点是否在多边形内。

然后这个问题变成了一个多边形点问题,在stackoverflow上有很多答案。

我只是想知道是否有其他替代方法?

1 个答案:

答案 0 :(得分:2)

假设多边形不重叠(或者如果他们这样做,你只对最顶部的多边形感兴趣),你可以使用涉及画布的“多边形点”解决方案:

  • 创建一个足以容纳所有多边形的画布。
  • 以不同颜色绘制每个多边形,一个接一个地
  • 查找像素所在点的位置
  • 这将告诉你那里的多边形。

请注意,您甚至不需要它们是人类可区分的颜色,您可以逐字地使用#000000#000001#000002等,并使用颜色的十六进制代码作为多边形的索引。