MKAnnotationViewのCalloutをプログラムで開く

MKAnnotationViewのCalloutをプログラムで開くこれ、できそうでできなかったんです。少なくとも1回1.5時間くらいははまって諦めた過去があります。なんで出来なかったのだろうと思うくらい簡単な解決策を見つけました。

うー、前回検索したときはこの回答に当たらなかったー。

やり方は簡単。

- (void)openAnnotation:(id)annotation;
{
    [mainMapView selectAnnotation:annotation animated:YES];
}

このメソッドを加えるだけですね。mainMapViewというのはMKMapViewのインスタンスです。このメソッドを呼び出す際に、特定のannotationを指定するんですが、僕の場合は、

MyAnnotation *selectedAnnotation;
for (MyAnnotation *m in mainMapView.annotations) {
    if (m.identifier==identifier) {
        selectedAnnotation = m;
    }
}

こんな感じでやりました。で、

[self openAnnotation:selectedAnnotation];

ですね。identifierと合致したannotationのcalloutが開きます。簡単!

Pocket
LINEで送る

You may also like...