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

时间:2017-08-08 04:10:32

标签: ios objective-c mkmapview mapkit

我有三个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

enter image description here

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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