efremidze / Cluster

Easy Map Annotation Clustering 📍
MIT License
1.28k stars 121 forks source link

Total number of annotations on cluster does not match the number of annotations I added to the manager #130

Open sarbogast opened 4 years ago

sarbogast commented 4 years ago

Description It is not necessarily a bug, maybe I'm not using the library right. When I add annotations to the manager I have a certain number of annotations in there, eg 362 But the if I sum up the numbers in all the cluster annotation view and isolated non-clustered annotations, or simply zoom out to the max, the total number of annotations is different (eg 231). And I get that number both on manager.annotations.count and on annotation.annotations.count:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
        if let annotation = annotation as? ClusterAnnotation {
            let identifier = "Cluster"
            let annotationView = mapView.annotationView(of: HTImageCountClusterAnnotationView.self, annotation: annotation, reuseIdentifier: identifier)
            annotationView.countLabel.textColor = UIColor.black
            annotationView.image = UIImage(named: "clusterpin")
            annotationView.canShowCallout = false
            print("Number of annotations in cluster: \(annotation.annotations.count)")
            print("Number of annotations in manager: \(manager.annotations.count)")
            return annotationView
        } else {
            ...
        }
    }

This is how I initialize my manager:

private lazy var manager: ClusterManager = { [unowned self] in
        let manager = ClusterManager()
        manager.delegate = self
        manager.maxZoomLevel = 17
        manager.minCountForClustering = 2
        manager.clusterPosition = .nearCenter
        manager.shouldRemoveInvisibleAnnotations = false
        return manager
    }()

I don't understand this discrepancy. I don't remove any annotation from the manager.

Smartphone

Checklist

CeccoCQ commented 4 years ago

Same issue here.

imnaveensharma commented 3 years ago

In my case, the problem is solved by changing the default values of the given 3 properties.

manager.shouldRemoveInvisibleAnnotations = false manager.shouldDistributeAnnotationsOnSameCoordinate = false manager.distanceFromContestedLocation = 0

Full Code is:

private lazy var clusterManager: ClusterManager = { [unowned self] in let manager = ClusterManager() manager.delegate = self manager.maxZoomLevel = 20//17 manager.minCountForClustering = 2 manager.clusterPosition = .nearCenter manager.shouldRemoveInvisibleAnnotations = false manager.shouldDistributeAnnotationsOnSameCoordinate = false manager.distanceFromContestedLocation = 0 return manager }()

matopeto commented 3 years ago

Same issue, fix by @imnaveensharma is not working for me

b00tsy commented 2 years ago

same problem here