1

私は MKMapView オブジェクトを使用しており、ピンを作成してマップ上に配置できます。私が今やろうとしているのは、ピンから情報を取り戻すことです。たとえば、私の

- (MKAnnotationView*) mapView:(MKMapView *)mapView viewForAnnotation (id<MKAnnotation>)annotation

ピンを作成し、マップ上に設定します。ユーザーがピンをクリックしたときに使用するボタンも作成しています。すべてがうまく機能します。今私の質問は、そのボタンがクリックされたとき、そのクリックされたピンから情報を取得するにはどうすればよいですか? 以下は、現在のセットアップ方法の小さなサンプルコードです。アドバイスをいただければ幸いです。

- (MKAnnotationView*) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    MKPinAnnotationView *annView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"location"];
    annView.pinColor = MKPinAnnotationColorRed;
    annView.animatesDrop = YES;
    annView.canShowCallout = YES;
    annView.calloutOffset = CGPointMake(-5, 5);

    UIButton* callout = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    [callout addTarget:self action:@selector(loadDetails:) forControlEvents:UIControlEventTouchUpInside];
    annView.rightCalloutAccessoryView = callout;
    return annView;
}

- (void)loadDetails:(id)sender
{
    //TODO: Get pin coordinates or address and match it back to an array of available address to show details in a new view
}

どんなアドバイスでも大歓迎です

4

2 に答える 2

0

のプロパティを持つMKPinAnnotationViewから派生するクラスを作成する必要がありますid<MkAnnotationView>。上記のメソッドで、MKPinAnnotationViewの代わりにこの新しいオブジェクトを作成しid<MKAnnotation>、渡されたアノテーションにプロパティを設定します。

于 2012-04-16T18:57:53.163 に答える
0

コールアウトのターゲットを設定する代わりに、デリゲート メソッドに応答する

mapView:annotationView:calloutAccessoryControlTapped:

には、座標をannotationView持つプロパティがあります。annotation

于 2012-04-16T20:14:45.070 に答える