如何知道哪个注释被点击?

时间:2011-07-25 09:32:14

标签: iphone ios4 mapkit

我在做mapview。在我的应用程序中,有代码以纬度和经度获取用户的当前位置。使用此坐标我正在创建一个soap请求。作为回应,我将获得位置的信息(拉链,城市,州,国家,坐标)。我已将此信息保存在NSDictionary中。

这是创建注释的代码。

MapLocation *annotation = [[MapLocation alloc] initWithCoordinate:location ownerInst:ownerInstitution];
    [mapView addAnnotation:annotation];
    [annotation release];


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

MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"];
annView.pinColor = MKPinAnnotationColorGreen;
annView.animatesDrop=TRUE;
annView.canShowCallout = YES;

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[infoButton addTarget:self action:@selector(infoButtonPressed) forControlEvents:UIControlEventTouchUpInside];
annView.rightCalloutAccessoryView = infoButton;


annView.calloutOffset = CGPointMake(-5, 5);
return annView;
}

当用户点击标注中的detaildisclosurebutton时,这是委托方法。

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control

点击详细信息显示按钮将加载新视图。在这个新视图中,我将显示从服务器检索到的信息。

到目前为止一切都很好。我在地图中有多个注释。但是,当特定注释被挖掘时,我将如何实现代码以显示与该注释相关的信息(我从服务器获得)。

我希望我能清楚地表达我的问题。随意询问更多细节。

1 个答案:

答案 0 :(得分:0)

您从委托方法获得的MKAnnotationView *view包含注释。您可以将所有信息存储在需要显示的MapLocation类中。

MapLocation *annotation = [[MapLocation alloc] initWithCoordinate:location ownerInst:ownerInstitution];
[mapView addAnnotation:annotation];
[mapView addAdditionalCustomInformation: SomeInfo]; //you need to write your custom methods for that ;)
[annotation release];