2011-07-22 50 views
6

我喜歡實施某事。喜歡這個。我有兩個帶註釋的註釋,但是MKMapView只允許同時選擇一個。如何顯示來自MKAnnotationView的多個標註?

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

當我選擇另一個註釋時,第一個註釋會自動取消選擇。

但在下圖中,它已成功實施。那麼這怎麼做呢? http://oi52.tinypic.com/14t3t09.jpg

回答

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的值,如果它爲空,則您將知道要清除你的標註。

+0

優秀!謝謝!! – baladurasa

+1

閱讀你鏈接到的其他解決方案,並注意到你改變了那裏的互聯網鏈接,你應該改變這個鏈接!幹得不錯 – whyoz