地图视图最初不会显示所有注释

您是否知道创建地图视图并在其上放置注释(图钉)?它不会显示所有图钉。 首先,您想知道缩放是否存在问题。 但是没有问题。 iOS就是这样管理的。 它希望避免具有许多彼此重叠的图钉的地图视图。 因此,它对引脚进行了优先排序,并显示了更高优先级的引脚。 然后,当您放大屏幕时,其他针脚将出现。

但是,您可以根据需要更改此默认设置以查看所有引脚。 甚至更好的主意是拥有一个群集地图,该地图可以显示每个针脚隐藏了多少针脚。

我将首先进行设置,即在屏幕上显示所有引脚。

MKA注解:

用于将您的内容与特定地图位置相关联的界面。

采用此协议的对象管理要在地图表面上显示的数据。 它不提供地图显示的视觉表示。 相反,您的地图视图的委托提供了 MKAnnotationView 显示注释内容所需的对象。

这意味着任何具有坐标的对象(MKAnnotation协议的方法)都可以传递给addAnnotation(地图视图对象的方法)。 所以我们有别针,但是他们的看法呢。 如苹果文档中所述,地图视图的委托提供了 MKAnnotationView 宾语。 因此,如果要更改注释视图,则应定制一个。

我们可以这样做(因为此方法会在要渲染该地图视图时通知并返回注解的视图):func mapView(_ mapView:MKMapView,viewFor注解:MKAnnotation)-> MKAnnotationView?

这是MKMapViewDelegate的方法

MKAnnotationView类的属性之一是displayPriority。 默认情况下,此属性设置为highPriority,这意味着仅显示更高优先级的注释。 因此,如果要查看所有注释,只需将其设置为.required。

在下面的示例中,我展示了一个示例:(我创建了一个示例位置,并将其显示在地图视图中,在这里,我只是放置了返回批注视图的函数,如果您想要该项目,则可以从下面的链接中获取它)

关于创建MKMarkerAnnotationView的注意事项是MKAnnotationView的子类。 要创建视图,最好使用dequeueReusableAnnotationView。

返回通过其标识符定位的可重用注释视图。

出于性能原因,通常应重用 MKAnnotationView 地图视图中的对象。 随着注释视图移出屏幕,地图视图将它们移至内部管理的重用队列。 随着新注释在屏幕上移动,并提示您的代码提供相应的注释视图,您应始终尝试在创建新视图之前使现有视图出队。 在对性能至关重要的操作(如滚动)中,出队可节省时间和内存。

好的,完成了。 您可以在地图中包含所有注释。 但是仍然可以重构代码以使其更整洁。

您可以删除所有用于创建注释视图的方法,并使用地图视图的register方法。

在使任何视图出队之前,请调用register方法告诉地图视图如何创建新的注释视图。

您只需要在视图控制器外部创建注释视图类,然后将其显示优先级更改为.required。

amirhossein828 /地图集群

通过在GitHub上创建一个帐户为Map-Clustering开发做出贡献。

github.com