首页 > 解决方案 > MapKit:如何获取和设置注释视图的碰撞框架矩形?

问题描述

MKAnnotationViews 文件说

管理注释视图之间的冲突

var collisionMode: MKAnnotationView.CollisionMode

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

enum MKAnnotationView.CollisionMode

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

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

那么如何获得collision frame rectangleMapKit 文档中引用的内容呢?我可能会尝试绘制这个矩形进行可视化调试。

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

这是我在MapKit

编辑

collision frame rectangle只是用来制作集群还是也用来隐藏显示优先级较低的集群?

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

标签: iosmapkitcollision-detectionmapkitannotation

解决方案


我在这里找到了解释。它说:
collisionMode:一个MKAnnotationView.CollisionMode。如果地图被缩小到发生碰撞的程度,两个相同的注记视图clusteringIdentifier将被一个集群注记替换。
但是什么构成了两个注释视图之间的冲突?要知道这一点,我们需要一个碰撞边缘。它可能是:
.rectangle:边缘是视图的框架。
.circle:边缘是可在视图框架中内写并居中的最大圆。

编辑:

文档说:为注释视图提供内容的最有效方法是设置其图像属性。注释视图会根据您指定的图像自动调整大小,并为其内容绘制该图像。此外,还有其他可能影响属性的frame属性。因此,正是这种自动调整frame来确定碰撞框架。


推荐阅读