如何从MKAnnotationView显示多个标注?

6

我希望实现类似这样的功能。我有两个带标注的注释,但MKMapView只允许同时选择一个。

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

当我选择另一个注释时,第一个注释将自动取消选择。
但在下面的图片中,它已经成功实现了。那么如何做到这一点呢? http://oi52.tinypic.com/14t3t09.jpg
1个回答

5
此外,还可以参考“在MKMapView中显示多个注释标注”的内容:Multiple annotation callouts displaying in MKMapView 看起来该框架不支持多选,因此您需要为此行为实现自定义标注。链接问题的答案建议将您的标注视图作为您的标注视图的一部分,以便您可以自己管理选择。个人喜欢将标注作为单独的标注实现 - 我有一个具有自定义标注的示例项目,您可以在此处找到: 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的值,如果为空,您将知道如何清除您的弹出窗口。


1
阅读了您链接的另一个解决方案并注意到您已更改megaupload链接,您也应该更改此链接!干得好... - whyoz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接