如何从MKAnnotationView显示多个标注?

时间:2011-07-22 16:22:03

标签: iphone objective-c mkmapview mkannotation mkannotationview

我喜欢实施......像这样。我有两个带标注的注释,但MKMapView只允许同时选择一个。

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

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

但在下图中,它已成功实施。那么怎么做呢? http://oi52.tinypic.com/14t3t09.jpg

1 个答案:

答案 0 :(得分:5)

另请参阅“在MKMapView中显示多个注释标注”: Multiple annotation callouts displaying in MKMapView

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

https://github.com/jacobjennings/JJMapCallout

这是我的解决方案:

MKAnnotationView - Lock custom annotation view to pin on location updates

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

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

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

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

相关问题