在iOS 11上使用MapKit进行集群:第2部分

在第一部分中,我们研究了MapKit实现注释集群(iOS 11的一项新功能)所涉及的一些高级概念。正如该帖子的结论所指出的,我们还有许多工作要做,以使我们的简单应用程序更加实用,并使其代码更具可读性。 在第二部分中,我们将做到这一点!

首先,快速回顾一下。 您可能还记得,在应用程序中建立注释集群并运行的过程非常简单:

  1. 在地图上的狭窄区域添加多个注释。
  2. 为MapKit提供每个注释的MKAnnotationView实例, MKAnnotationView注意适当地设置其clusteringIdentifier
  3. 为MapKit提供其他MKAnnotationView实例, MKAnnotationView用于MKClusterAnnotation类型,这些实例在运行时自动生成。
  4. 享受您整洁有序的地图!

大部分工作都是在单个MKMapViewDelegate方法( viewFor )中完成的,并且所得的项目虽然简单易用,但可能会更强大。 因此,让我们进行一些重构! 我们将从更新MapItemMKAnnotation MKAnnotation的数据类型)开始。

在第一部分中, MapItem非常简单:它具有CLLocationCoordinate2D类型的单个属性,这是MKAnnotation要求的MKAnnotation 。 在我们更新的应用程序中,我们希望地图上的颜色更加多样化,因此我们将扩展MapItem以包含ItemType ,这将确定地图上注释的颜色:

如您所见,我们的集群现在可以显示有关它们包含的数据的更多信息,并且导航地图要直观得多。 繁荣! 🎉

希望您已经学到了一些有关MapKit的功能的有用技巧,这些技巧在iOS上的注释集群方面比本迷你系列的第1部分和第2部分更重要。 我们已经从一个显示该系统工作原理的超简单示例,变成了一个具有生产就绪代码的更复杂示例(借助Swift🤓的强大功能使其变得优雅)。

谢谢阅读! 如果所有这些地图都让您感到有些迷茫,请在下面发表评论,在Twitter @worthbak上打我,或在Github上查看完整的项目。 否则,编码愉快!