Sko*_*oua 5 mapkit ios mapkitannotation swift
我有MKMapView几个注释,其中 3 个注释彼此非常接近。
我曾经mapView.showAnnotations(mapView.annotations, animated: false)在启动时显示同一区域上的所有注释,但 3 个注释之一被隐藏,因为它太接近了。
我查看了Apple的文档,但找不到防止这种情况发生的方法,知道如何防止注释分组吗?
(我以前从未见过这个,也许这是iOS 11的功能)
您所看到的不是集群(您必须编写代码来获取集群,并且通常会看到集群)
我的实验似乎表明......
MKAnnotationViews从地图的顶部到底部渲染。(北在哪里并不重要)。MapKit决定绘制重叠MKAnnotationViews,则MKAnnotationView靠近底部的部分将绘制在顶部(因为它是稍后绘制的)MKAnnotationViews,下面呈现的标题也MKMArkerAnnotationViews需要空间。这些标题的呈现受 的影响markerView.titleVisibility。如果markerView.titleVisibility设置为.visible(而不是默认的.adaptive),则该标题比稍后呈现的 a 更强MarkerAnnotationView,即使后者MarkerAnnotationView具有displayPriority = .required. MarkerAnnotationView靠近底部的部分不被渲染。MarkerAnnotationView接近顶部的位置较低,甚至会发生这种情况displayPriority。所以aMarkerAnnotationView跟低displayPriority,.titleVisibility = .visible可以使aMarkerAnnotationView更接近底部的跟displayPriority = .required消失。那你该怎么办:
annotationView.displayPriority = .required所有相关注释。(这是必要的,但还不够)annotationView.titleVisibility = .visible否则标题将使渲染靠近底部的注释视图消失。而是设置annotationView.titleVisibility = .adaptive我认为你无法完全控制可见性。但这个问题让annotationView.titleVisibility = .visible我感到惊讶,你应该避免它,因为它会隐藏注释。
如果使用集群,集群的行为就像(并且是)注释,其行为与上述完全相同。
几年后编辑:
自iOS 14以来,MKAnnotationView有两个新变量:
zPriority https://developer.apple.com/documentation/mapkit/mkannotationview/3547913-zpriorityselectedZPriority https://developer.apple.com/documentation/mapkit/mkannotationview/3547912-selectedzpriority设置较高的值以确保更重要的内容MKAnnotationView保持可见。这很好用。
对于具有相同的注释zPriority,上面的文本仍然有效。
请注意,Apple 决定将 的zPriority财产设为 的财产MKAnnotationView,而不是MKAnnotation.
这意味着一旦 MapKit 决定隐藏您最喜欢的MKAnnotationView,您就无法zPriority再设置该变量,因为视图不再退出。我通过zPriority在创建后立即设置来解决这个问题MKAnnotationView。最后一段不在苹果文档中。
| 归档时间: |
|
| 查看次数: |
1177 次 |
| 最近记录: |