I have a MKMapView
with several annotations and 3 of them are very close to each other.
I used mapView.showAnnotations(mapView.annotations, animated: false)
to display all annotations on the same region at launch but one of the 3 is hidden because it's too close.
I looked into Apple's Documentation but couldn't find a way to prevent this from happening, any idea how to prevent annotations grouping?
(I've never seen this before, maybe it's a iOS 11 feature)
What you are seeing ist not clustering (you had to write code to get a cluster and you would usually see a cluster)
My experiments appear to suggest...
MKAnnotationViews
are rendered from top to bottom of the map. (It doesn't matter where north is).MapKit
decides to draw overlapping MKAnnotationViews
, then the MKAnnotationView
nearer to the bottom is drawn on top (because it's drawn later)MKAnnotationViews
, also titles rendered below MKMArkerAnnotationViews
need space. The rendering of those titles is influenced by markerView.titleVisibility
. If markerView.titleVisibility
is set to .visible
(instead of the default .adaptive
), then this title is stronger than a MarkerAnnotationView
that is rendered later, even if the later MarkerAnnotationView
has a displayPriority = .required
. The MarkerAnnotationView
nearer to the bottom is not rendered.MarkerAnnotationView
nearer to the top has a low displayPriority
. So a MarkerAnnotationView
with low displayPriority
and .titleVisibility = .visible
can make a MarkerAnnotationView
nearer to the bottom with displayPriority = .required
disappear.So what should you do:
annotationView.displayPriority = .required
for all relevant annotations. (This is necessary but not sufficient)annotationView.titleVisibility = .visible
or the title will make annotationViews disappear that are rendered nearer the bottom. Instead set annotationView.titleVisibility = .adaptive
I don't think you can control the visibility completely. But the problem with annotationView.titleVisibility = .visible
was surprising for me and you should avoid it because it will hide annotations.
Clusters behave like (and are) annotations that behave exactly as described above, if clusters are used.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With