ios - MapKit:如何获取和设置注释视图的碰撞框架矩形?
问题描述
MKAnnotationView
s 文件说
管理注释视图之间的冲突
var collisionMode: MKAnnotationView.CollisionMode
解释碰撞框架矩形时使用的碰撞模式。
enum MKAnnotationView.CollisionMode
指示如何解释注释视图的碰撞框架矩形的常量。
我想调试一些我不理解的碰撞行为。
那么如何获得collision frame rectangle
MapKit 文档中引用的内容呢?我可能会尝试绘制这个矩形进行可视化调试。
我该如何设置collision frame rectangle
?也许不是直接的,但在众多涉及的视图中,哪一个决定了这个矩形?
这是我在MapKit
编辑
这collision frame rectangle
只是用来制作集群还是也用来隐藏显示优先级较低的集群?
我有两个AnnotationViews
视觉上相互叠加。一个有displayPriority = .required
,一个有displayPriority = .defaultHigh
。一个应该消失。但他们collision frame rectangle
的 s 在哪里?它们真的重叠吗?
解决方案
我在这里找到了解释。它说:
collisionMode
:一个MKAnnotationView.CollisionMode
。如果地图被缩小到发生碰撞的程度,两个相同的注记视图clusteringIdentifier
将被一个集群注记替换。
但是什么构成了两个注释视图之间的冲突?要知道这一点,我们需要一个碰撞边缘。它可能是:
.rectangle
:边缘是视图的框架。
.circle
:边缘是可在视图框架中内写并居中的最大圆。
编辑:
文档说:为注释视图提供内容的最有效方法是设置其图像属性。注释视图会根据您指定的图像自动调整大小,并为其内容绘制该图像。此外,还有其他可能影响属性的frame
属性。因此,正是这种自动调整frame
来确定碰撞框架。
推荐阅读
- google-analytics - 谷歌分析跨域跟踪不起作用 - 无法通过 cid
- scala - 具有动态数据类型的 UDF
- presto - Presto 中的“查询数据所在的位置”是什么意思?
- azure-analysis-services - Azure SSAS 向上和向下缩放
- reactjs - 如何将历史参数传递给 redux-toolkit 中的路由器中间件?
- excel - 代码行 Range.PivotCell 在 Excel 2013 但不是 Excel 2017 中导致错误 (1004)
- python - 我在 python 中使用套接字模块时收到此错误:'socket.gaierror: [Errno 11001] getaddrinfo failed'
- c++ - C++ 应用程序分配的 MATLAB 访问内存
- statistics - 我们可以在考虑方法差异的同时结合两个数据集吗?
- javascript - 使用 jest、rtl 和 ionic 对输入文本的状态更新测试反应功能