我想为我的MKAnnotations实现一种空间索引数据结构。目前,当我尝试根据距离标准(3-4k的位置)进行筛选时,它非常缓慢(目前使用简单的双重for循环...)。 我想创建
MKAnnotations
的聚类,以确定它是否靠近另一个。此外,这些位置有一定的(创建)顺序,并且需要“上一个”/“下一个”功能来“跳转”(这不是必须的)。我已经了解了kd-tree
和r-tree
结构,它们似乎都可以满足快速获取距离/邻居的选项以进行过滤/聚类,但我不确定哪个对我最好,或者是否还有其他选择。我应该使用什么算法/数据结构?更新:我将这些位置存储在Core Data数据库中,它们表示路径。打开地图时,它们被提取到一个数组中,然后我只是使用该数组进行距离计算和注释创建。当用户移动/缩放地图时,我遍历它们并决定需要在地图上更改什么,因此整个过程都是静态的。据我所知,如果我使用树,我可以将位置存储在那里,当发生缩放/移动时,我只需搜索它,并获得新区域中的位置。这是真的吗?即使在动态情况下,当我可以将新位置添加到此数组时,它也只会进行单个插入,并且发生得很少。