-1

在我的 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上有很多答案。

我只是想知道是否有任何替代方法?

4

1 回答 1

2

假设多边形不重叠(或者如果重叠,您只对最上面的多边形感兴趣),您可以使用涉及画布的“point-in-polygon”解决方案:

  • 创建一个足以容纳所有多边形的画布。
  • 一个接一个地用不同的颜色绘制每个多边形
  • 查找该点所在的像素是什么颜色
  • 这将告诉您那里的多边形。

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

于 2013-06-20T00:23:57.307 回答