1

我正在使用 MKMapView 对象,并且能够创建图钉并将它们放置在地图上。我现在要做的是从 pin 中获取信息。例如在我的

- (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 回答