Cluster icon indicating copy to clipboard operation
Cluster copied to clipboard

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

Open sarbogast opened this issue 5 years ago • 4 comments

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

  • Device: iPhone 11 Pro
  • OS: iOS14
  • Version: 3.0.3

Checklist

sarbogast avatar Sep 21 '20 10:09 sarbogast

Same issue here.

CeccoCQ avatar Oct 02 '20 14:10 CeccoCQ

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 }()

imnaveensharma avatar Dec 31 '20 11:12 imnaveensharma

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

matopeto avatar Jan 12 '21 13:01 matopeto

same problem here

b00tsy avatar Apr 21 '22 15:04 b00tsy