プログラムでMKPinAnnotationView
のコールアウトを開きたい。たとえば、地図上に10個のピンをドロップし、最も近いピンを開きたいとします。どうすればこれを行うことができますか?
AppleはMKAnnotationView's
に「selected」パラメータを指定しましたが、直接設定することはお勧めしません(これは機能しません。試してみました)。
残りの部分については、MKAnnotationView
にはsetHighlighted(同じストーリー)のみがあり、ShowCallout
メソッドを使用できます。
これが可能かどうかのヒントはありますか?
MapViewControllerで、アクションメソッドを作成します。
- (void)openAnnotation:(id)annotation
{
//mv is the mapView
[mv selectAnnotation:annotation animated:YES];
}
次に、現在の場所に基づいて最も近い注釈を決定し、配列で使用可能な注釈をたどることができます。
[mv annotations];
最も近い注釈が計算されたら、次を呼び出します。
[self openAnnotation:closestAnnotation];
MapViewは自動的にスクロールして、注釈を表示領域の中央に配置します。
Swift 3では、これは次のように更新されます。
func openAnnotation(annotation: MkAnnotation) {
_ = [mapView .selectAnnotation(annotation, animated: true)]
}
任意の注釈を使用して呼び出すことができます(これにより、注釈の吹き出しビューが開き、注釈をマップの中央に配置しようとします)
たとえば、仮想の注釈リストで2番目の注釈を使用します。
openAnnotation(annotation: mapView.annotations[1])