0

我有一张包含几百个 MKPointAnnotations 的地图,并且已设置为具有左右标注附件,我遇到的问题是找到一种方法来执行特定于该注释的操作

例如,如果有人按下特定的注释,我想转到一个新的 viewController,其中包含有关注释的详细信息。我已经设置了一个符合 MKAnnotation 的自定义对象,因此所有数据都包含在注释中......

    @synthesize coordinate;
@synthesize _title;
@synthesize _date;
@synthesize _description;
@synthesize _coordinates;

- (CLLocationCoordinate2D)coordinate;{
    CLLocationCoordinate2D theCoordinate;
    theCoordinate.latitude = _coordinates.latitude;
    theCoordinate.longitude = _coordinates.longitude;
    return theCoordinate; 
}

- (NSString *)title {
 return _title;
}

- (NSString *)subtitle {
 return _description;
}

- (void)dealloc {
 [super dealloc];
 [_description release];
 [_date release];
 [_title release];
}

谁能帮我解决这个问题:D

4

1 回答 1

3

让我们考虑一下您上面给出的代码的类名是 annotation.m

在您的视图控制器中

annotation  *annotationObject=[[annotation alloc]init];
annotationObject.title=@"Some title";
annotationObject.subTitle=@"Some subtitle";
annotationObject.coordinate=someCoordinate;
[mapView addAnnotation:annotationObject];
[annotationObject release];

将上面的代码放在一个循环中,可以添加很多注解,或者将注解对象放在一个数组中,使用addAnnotations来mapView。

在 viewForAnnotation 中添加一个附件按钮到注释

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
 MKAnnotationView *annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Pin"] autorelease];
    annotationView.canShowCallout = YES;
    UIButton *annotationButton=[UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    annotationView.rightCalloutAccessoryView = annotationButton;
    return annotationView;
}

当用户选择辅助按钮时,将调用此委托

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
     //Get the specific annotation by the view.annotation.title 
     //Go to another view that has details
}
于 2010-11-24T14:09:12.667 回答