MapKit:如何获取和设置注释视图的碰撞框架矩形?

时间:2019-04-13 18:51:55

标签: ios mapkit collision-detection mapkitannotation

MKAnnotationView的文档说

管理注释视图之间的冲突

var collisionMode: MKAnnotationView.CollisionMode
  

解释碰撞框架矩形时要使用的碰撞模式。

enum MKAnnotationView.CollisionMode
  

指示如何解释注释视图的碰撞框架矩形的常量。

我想调试一些我不了解的碰撞行为。

那么如何获取MapKit文档中引用的collision frame rectangle?我可能会尝试绘制此矩形以进行视觉调试。

如何设置collision frame rectangle?也许不是直接的,但是在涉及的众多视图中,哪个确定了此矩形?

这是我在MapKit

中找到的该术语的唯一参考

修改

这个collision frame rectangle是仅用于创建群集还是用于隐藏显示优先级较低的群集?

我有两个AnnotationViews在视觉上相互重叠。一个拥有displayPriority = .required,一个拥有displayPriority = .defaultHigh。一个应该消失。但是他们的collision frame rectangle在哪里?它们真的重叠吗?

1 个答案:

答案 0 :(得分:1)

我找到了一个解释here。它说:
collisionMode:一个MKAnnotationView.CollisionMode。如果将地图缩小到足以使其碰撞的位置,则具有相同clusteringIdentifier的两个注释视图将被簇注释替换。
但是,什么构成两个注释视图之间的冲突?要知道这一点,我们需要一个碰撞边缘。可能是:
.rectangle:边缘是视图的框架。
.circle:边缘是视图框架中无法显示并位于其中心的最大圆圈。

编辑:

docs说:为注释视图提供内容的最有效方法是设置其image属性。注释视图会自动将其调整为您指定的图像大小,并为其内容绘制图像。此外,还有其他一些属性可能会影响frame属性。因此,自动调整的frame决定了碰撞帧。