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
在哪里?它们真的重叠吗?
答案 0 :(得分:1)
我找到了一个解释here。它说:
collisionMode
:一个MKAnnotationView.CollisionMode
。如果将地图缩小到足以使其碰撞的位置,则具有相同clusteringIdentifier
的两个注释视图将被簇注释替换。
但是,什么构成两个注释视图之间的冲突?要知道这一点,我们需要一个碰撞边缘。可能是:
.rectangle
:边缘是视图的框架。
.circle
:边缘是视图框架中无法显示并位于其中心的最大圆圈。
编辑:
docs说:为注释视图提供内容的最有效方法是设置其image属性。注释视图会自动将其调整为您指定的图像大小,并为其内容绘制图像。此外,还有其他一些属性可能会影响frame
属性。因此,自动调整的frame
决定了碰撞帧。