地图注释在应该聚类时重叠

Map annotations overlap when they should get clustered

我正在开发一个 iOS swift 应用程序,该应用程序将图像显示为地图上的注释。当多个注释重叠时,它们应该聚集在一起,而不是显示为图像之一。

apple 提供的集群有时无法正常工作。多次缩小和放大时,图像可能会重叠很多。

它应该是这样的:

这是错误发生时的样子:

我已将示例视频上传到 Youtube (https://youtu.be/kaI0bTS8_HY)

关于实现的一些细节:

MapViewController 注册这个注解类型来显示注解:

mapView.register(PhotoAnnotationView.self, forAnnotationViewWithReuseIdentifier: MKMapViewDefaultAnnotationViewReuseIdentifier)

省略,因为我认为这不是问题的根源: - MKClusterView(常规 ClusterView 也存在错误) - 将注释添加到地图视图

这个问题的根源是什么?

PhotoAnnotationView 中,您的 annotation 观察者应该重置 clusteringIdentifier:

override var annotation: MKAnnotation? {
    willSet {
        if let annotation = newValue as? PhotoAnnotation {
            clusteringIdentifier = "LocatedPhoto"            // make sure to reset this
            let url = annotation.locatedPhoto.thumbnailURL
            let displayLocation = annotation.displayLocation
            setImage(url: url)
        }
    }
}

当它们出列并重新使用时,clusteringIdentifier 可以被清除。通过再次设置它,您可以确保集群仍然会发生。