我正在开发一个矢量地图编辑器,有一组元素,每个元素都在视图中指定了其边界框。随着鼠标移动,我想要高亮显示第一个包含当前鼠标位置的边界框的元素。目前我使用一个简单的列表并进行遍历,但随着元素数量的增加,当前搜索算法的O(n)复杂度将成为交互式应用程序的问题。
那么,有什么更好的算法/数据结构可以解决这个问题呢?
一些额外的约束/要求:
- 填充边界框数据结构必须相对快速(因为我需要每次地图移动或缩放或投影变化时都执行该操作)。
- 算法必须能够找到所有匹配的元素(而不仅仅是第一个)。原因是某些地图元素可能具有不规则的形状,因此简单的边界框匹配不够严格。然后我会浏览匹配列表并进行精确匹配。
- 添加到集合中的框的顺序需要以某种方式得以维护 - 在另一个元素上方绘制的地图元素在匹配其边界框时应具有优先级。