cocoa-touch - 同一 MKMapView 位置上的许多图钉

标签 cocoa-touch ios4 annotations mkmapview

我有一个场景,许多人住在同一所房子里,因此被映射到相同的经度和纬度。我希望每个人都有一个注释。我有哪些选项可以在同一位置放置多个注释/图钉?其他人是如何解决类似问题的?

干杯

尼克

最佳答案

我通过引入“聚合”注解的概念解决了这个问题,该注解表示否则靠得太近而无法区分的注解。

我采用了一种简单的(又名。朴素的)算法,当我添加一个新的注释时,我检查它是否与现有注释的 d 距离。如果是,我创建一个新的聚合注释,将现有注释和新注释放在它下面。然后我删除现有注释并改为添加聚合注释。聚合注释的坐标是其成员的平均值。

这个特定的算法很容易实现,但具有相当可怕的复杂性,因为它会为添加的每个注释检查每个现有注释。一种优化方法是使用 kd 树 来减少搜索空间。

明智的用户界面,点击这样的聚合注释将显示一个标注,其中显示聚合的注释数量,以及一些关于聚合注释的摘要信息。

此外,标注的 MKAnnotationViewrightCalloutAccessoryView 可以深入到列出聚合注释成员的 TableView 中,以便用户可以选择特定成员进行检查。

另一个需要考虑的问题是如何确定两个注释何时靠得太近。你可以根据实际距离来做,在这种情况下,如果你缩小了,注释仍然会重叠;或者您可以根据屏幕上的逻辑距离来执行此操作,同时考虑注释 View 的逻辑大小。后者可以确保您永远不会有重叠的注释,但计算量更大,因为您需要在 map 区域发生变化时重新计算聚合。

关于cocoa-touch - 同一 MKMapView 位置上的许多图钉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4895567/

相关文章:

java - 使用 JAXB 为 XMLRootElement 或 XMLElement 注释动态添加值

ios - 将图像添加到 UILabel 的左侧

iphone - 为 iPhone 制作 map 应用程序的最佳方式是什么

xcode - 无法在 iPhone 3G 中安装使用 Xcode 4.2 构建的应用程序

objective-c - 当我在 XCode 中创建一个新的 "Empty Application"时没有 .xib 文件

annotations - Prolog 中 'semidet' 的概念解决了吗?

ios - 如何在使用自定义单元格的 UICollectionView 中正确设置异步图像下载?

ios - UIScrollView 自动布局约束打破设备旋转

iphone - UIpopoverviewcontroller 单击按钮隐藏 popoverview 并从父 View 中打开 imagepicker

java - 是否可以将方法参数传递给方法上的注释?