Geometry 如何查找绑定是否与传单中的多个多边形相交/包含多个多边形

Geometry 如何查找绑定是否与传单中的多个多边形相交/包含多个多边形,geometry,leaflet,polygons,Geometry,Leaflet,Polygons,基本上我想使用zoombox来选择多个多边形 我现在要做的是使用传单内置的intersects函数来比较zoombox(一个矩形)的边界与地图中的其他多边形 此解决方案有两个问题: 很慢。对于每个坐标为10到100的100多个多边形,查找所有相交/重叠多边形可能需要一秒以上的时间 它不适用于凹多边形。因为传单的相交函数非常简单,它将每个多边形视为一个矩形,并比较它们的SW和NE坐标。(这也解释了为什么找到交叉点很慢,因为它每次都必须通过所有坐标才能找到最大/最小坐标) 我想我可以在初始化阶段保存

基本上我想使用zoombox来选择多个多边形

我现在要做的是使用传单内置的
intersects
函数来比较zoombox(一个矩形)的边界与地图中的其他多边形

此解决方案有两个问题:

  • 很慢。对于每个坐标为10到100的100多个多边形,查找所有相交/重叠多边形可能需要一秒以上的时间
  • 它不适用于凹多边形。因为
    传单
    相交
    函数非常简单,它将每个多边形视为一个矩形,并比较它们的SW和NE坐标。(这也解释了为什么找到交叉点很慢,因为它每次都必须通过所有坐标才能找到最大/最小坐标)
  • 我想我可以在初始化阶段保存每个多边形的最小值/最大值,尽管它会将启动时间增加几秒钟,这对于web应用程序来说不是一个小数字

    但是对于凹形交叉点检测,我想不出任何好的方法来解决它,而不会造成很大的性能损失。用户显然不想拖动,等待几秒钟,然后看到所选内容被高亮显示。
    我能想到的一个简单的解决方案是检查每个多边形的所有边的交点,但这需要很长时间,因为多边形非常复杂,每个边都有10到100条边

    显示100多个多边形开始变得很多。至于相交任意形状的多边形,你们可能会感兴趣。我试过使用草皮,但速度还是很慢。我发现唯一快速的是openlayer的框选择,但我认为它不能用于传单