使用自定义注释的MapView集群

时间:2018-02-10 15:14:41

标签: swift mapkit

我正在尝试使用自定义注释来集群我的mapView,但永远不会调用集群。这是我的代码:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
        if annotation is MKUserLocation{
            return nil
        }

        let an = MKAnnotationView.init(annotation: annotation, reuseIdentifier: "AD")
        an.clusteringIdentifier = (annotation as! StopAnnotation).id!.joined(separator: "_")
        an.image = #imageLiteral(resourceName: "face")
        return an
    }

这永远不会触发群集,我也实现了这个委托:

 func mapView(_ mapView: MKMapView, clusterAnnotationForMemberAnnotations memberAnnotations: [MKAnnotation]) -> MKClusterAnnotation {
        return MKClusterAnnotation(memberAnnotations: memberAnnotations)
    }

也从未打过电话。我做错了什么?

1 个答案:

答案 0 :(得分:3)

确保clusteringIdentifier对每个群集都不是唯一的。由于您正在通过(annotation as! StopAnnotation).id!,我猜测它是uniq。

来自Apple文档:

  

当地图表面上的多个注释视图与相同标识符之间发生碰撞时,会发生聚类。

您可以阅读更多here