2011-07-22 11 views
6

私はsthを実装するのが好きです。このような。私は吹き出しを持つ2つの注釈を持っていますが、MKMapViewは1つだけを同時に選択することができます。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

あなたがリンクした他の解決策を読んで、そこにmegauploadリンクを変更したことに気づいたら、このリンクも変更する必要があります!よくやった... – whyoz

関連する問題