基本上我想使用zoombox来选择多个多边形。
我现在正在做的是使用内置intersects
函数的传单来比较缩放框(矩形)的边界与地图中的每个其他多边形。
此解决方案有两个问题:
leaflet
的{{1}}函数非常幼稚,它将每个多边形视为一个矩形并比较它们的SW和NE坐标。 (这也解释了为什么它找到交叉点的速度很慢,因为它必须每次都通过所有坐标来找到它们的最大/最小值。)我想我可以在初始化阶段保存每个多边形的最小值/最大值,但它会将启动时间增加几秒,这对于Web应用程序来说不是一个小数字。
但是对于凹面交叉检测,我想不出任何好的方法来解决它而不会造成大的性能损失。用户显然不想拖动,等待几秒钟,并看到所选择的突出显示。 我能想到的一个天真的解决方案是检查每个多边形的所有边缘的交叉点,但这需要很长时间,因为多边形非常复杂,每个边缘有10s-100s。