另请参阅“在 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 的值,如果它为空,您就会知道要清除标注。