MKMapView重叠MKAnnotations只允许显示两个标注

我有三个MKPointAnnotation对象,它们以完全相同的坐标添加到MKMapView ,并且每个对象都被赋予一个唯一的标题。

 MKPointAnnotation *a1 = [[MKPointAnnotation alloc] init]; a1.coordinate = CLLocationCoordinate2DMake(45.875684, -122.656254); a1.title = @"Title 1"; [self.mapView addAnnotation:a1]; MKPointAnnotation *a2 = [[MKPointAnnotation alloc] init]; a2.coordinate = CLLocationCoordinate2DMake(45.875684, -122.656254); a2.title = @"Title 2"; [self.mapView addAnnotation:a2]; MKPointAnnotation *a3 = [[MKPointAnnotation alloc] init]; a3.coordinate = CLLocationCoordinate2DMake(45.875684, -122.656254); a3.title = @"Title 3"; [self.mapView addAnnotation:a3]; 

将它们添加到地图时,通常只需点击注释,然后再次点击以循环重叠的引脚。 但是,当有两个以上时,似乎只限于循环通过两个注释,即使有三个重叠。 Title 1从未显示:

在此处输入图像描述

这对我来说似乎是一个MKMapView错误,但是之前有其他人经历过这个并找到了解决方法吗?

我可以像你描述的那样确认这是有效的,它确实看起来像一个bug(或者至少我找不到任何相关的文档)。

一种解决方案(解决方法)是管理mapView可以自己处理的两个注释。 然后,当用户选择(或取消选择)注释时,您可以将刚刚取消选择的注释交换为第三个注释。 就像是:

 extension ViewController: MKMapViewDelegate { func mapView(_ mapView: MKMapView, didDeselect view: MKAnnotationView) { mapView.removeAnnotation(view.annotation!) mapView.addAnnotation(a1) } } 

我希望这是有道理的。 祝你好运!