【问题标题】:MKMapView prevent annotations groupingMKMapView 防止注释分组
【发布时间】:2017-09-12 15:56:52
【问题描述】:

我有一个 MKMapView 有几个注释,其中 3 个彼此非常接近。

我使用mapView.showAnnotations(mapView.annotations, animated: false) 在启动时在同一区域显示所有注释,但三个注释之一因为太近而被隐藏。

我查看了 Apple 的文档,但找不到防止这种情况发生的方法,知道如何防止注释分组吗?

(我以前从未见过这个,可能是 iOS 11 的功能)

【问题讨论】:

  • 默认情况下您的注释没有分组行为,但如果太近,则一个会重叠另一个
  • @ReinierMelian 是的,我看到了。有没有办法显示每个注释,即使它们像谷歌地图一样相互重叠?

标签: ios swift mapkit mapkitannotation


【解决方案1】:

你看到的不是集群(你必须编写代码来获得一个集群,你通常会看到一个集群)

我的实验似乎表明...

  1. MKAnnotationViews 从地图的顶部到底部呈现。 (北在哪里并不重要)。
  2. 如果MapKit 决定绘制重叠的MKAnnotationViews,则靠近底部的MKAnnotationView 将绘制在顶部(因为它是稍后绘制的)
  3. 不仅MKAnnotationViews,在MKMArkerAnnotationViews下方呈现的标题也需要空间。这些标题的呈现受markerView.titleVisibility 的影响。如果markerView.titleVisibility 设置为.visible(而不是默认的.adaptive),那么这个标题比稍后渲染的MarkerAnnotationView 强,即使后面的MarkerAnnotationViewdisplayPriority = .required。靠近底部的MarkerAnnotationView 不会被渲染。
  4. 即使靠近顶部的MarkerAnnotationView 具有较低的displayPriority,也会发生这种情况。因此,MarkerAnnotationView 与低 displayPriority.titleVisibility = .visible 可以使 MarkerAnnotationView 更接近底部,而 displayPriority = .required 消失。

那你该怎么办:

  1. 确保annotationView.displayPriority = .required 用于所有相关注释。 (这是必要的,但还不够)
  2. 不要设置annotationView.titleVisibility = .visible 否则标题将使annotationViews 消失在靠近底部的位置。而是设置annotationView.titleVisibility = .adaptive

我认为您无法完全控制可见性。但是annotationView.titleVisibility = .visible 的问题让我感到惊讶,您应该避免使用它,因为它隐藏注释。

如果使用集群,则集群的行为类似于(并且是)行为与上述完全相同的注释。

【讨论】:

  • 我很怀疑,但.displayPriority = .required.titleVisibility = .adaptive 的组合也为我解决了这个问题。
  • 完美运行
猜你喜欢
  • 1970-01-01
  • 2014-03-27
  • 2020-12-06
  • 2012-02-28
  • 2012-10-12
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多