6

我喜欢执行某事。像这样。我有两个带有标注的注释,但 MKMapView 只允许同时选择一个。

[mapView selectAnnotation:self.firstAnnotation animated:FALSE];
[mapView selectAnnotation:self.secondAnnotation animated:FALSE];

当我选择另一个注释时,第一个注释会自动取消选择。

但是在下图中,它已经成功实现了。那么如何做到这一点呢? http://oi52.tinypic.com/14t3t09.jpg

4

1 回答 1

5

另请参阅“在 MKMapView 中显示多个注释标注”: 在 MKMapView 中显示多个注释标注

该框架似乎不支持多项选择,因此您必须为此行为实现自定义标注。链接问题的答案建议将标注作为注释视图的一部分,以便您自己管理选择。就我个人而言,我喜欢将标注实现为单独的注释 - 我在这里有一个带有自定义标注的示例项目:

https://github.com/jacobjennings/JJMapCallout

这是我的解决方案:

MKAnnotationView - 锁定自定义注释视图以固定位置更新

在这个项目中,我转发了 MKMapView 委托方法

- (void)mapView:(MKMapView *)aMapView didSelectAnnotationView:(MKAnnotationView *)aView
- (void)mapView:(MKMapView *)aMapView didDeselectAnnotationView:(MKAnnotationView *)aView

到相应的注释。这使我能够实现预期的标注行为。但是,您可以忽略 didDeselectAnnotationView 消息以使标注可见。

要了解用户是否点击地图以清除注释(未点击图钉),请检查您的 didDeselectAnnotationView 方法中的 mapView.selectedAnnotations 的值,如果它为空,您就会知道要清除标注。

于 2011-09-12T16:51:33.530 回答