Summary:
The documentation for MapKit Annotation View callouts states that only one callout is visible at any given time. This doesn't seem to be the case on iOS 12, where it happens frequently (under the circumstances detailed below and illustrated in the sample code) that a previous callout stays visible, even though the code explicitly deselects all annotations.
Steps to Reproduce:
Our apps need to visually show several thousands (can get up to a million) items on the same map, so, in order not to overload the view and make it unusable, a preemptive filter is applied to limit the amount of pins shown to the area the user is looking at. When the user scrolls and zooms the map, the filter is re-applied and annotations are removed and added back according to the area. On iOS 11 and earlier, there's been no problem with this approach, but on iOS 12 we've started to notice that, when dragging/zooming the map with an open callout, sometimes it stays selected on a different annotation, and an additional callout is shown when tapped.
Explicitly deselecting annotations before rebuilding them seems to help, but doesn't fully solve the issue.
Expected Results:
When rebuilding the annotation list, callouts are cleared
Actual Results:
Sometimes a callout stays visible, and refers to a different annotation: a subsequent tap on a different annotation opens and additional callout.
Description
Summary: The documentation for MapKit Annotation View callouts states that only one callout is visible at any given time. This doesn't seem to be the case on iOS 12, where it happens frequently (under the circumstances detailed below and illustrated in the sample code) that a previous callout stays visible, even though the code explicitly deselects all annotations.
Steps to Reproduce:
Our apps need to visually show several thousands (can get up to a million) items on the same map, so, in order not to overload the view and make it unusable, a preemptive filter is applied to limit the amount of pins shown to the area the user is looking at. When the user scrolls and zooms the map, the filter is re-applied and annotations are removed and added back according to the area. On iOS 11 and earlier, there's been no problem with this approach, but on iOS 12 we've started to notice that, when dragging/zooming the map with an open callout, sometimes it stays selected on a different annotation, and an additional callout is shown when tapped. Explicitly deselecting annotations before rebuilding them seems to help, but doesn't fully solve the issue.
Expected Results: When rebuilding the annotation list, callouts are cleared
Actual Results: Sometimes a callout stays visible, and refers to a different annotation: a subsequent tap on a different annotation opens and additional callout.
Version/Build: iOS 12.x
Configuration:
All iOS devices
- Product Version: 12.x Created: 2019-05-23T10:53:57.079392 Originated: 2019-05-23T00:00:00 Open Radar Link: http://www.openradar.me/51063080