0

我正在MKMapView一个应用程序中实现一个,并且已经实现了该-mapView: viewForAnnotation:方法,以便在地图上显示动态放置的带有标注的图钉。我感兴趣的地图上的注释是在一个名为Annotationimplements的单独类中定义的MKAnnotation。在-mapView: viewForAnnotation:方法中,我需要获取通过方法的annotation变量输入的变量的值,该变量将是Annotation.

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
if ([annotation isKindOfClass:[MKUserLocation class]]) {
    return nil;
}

if ([annotation isKindOfClass:[Annotation class]]) {
    static NSString *identifier = @"RemoteLocation";
    MKPinAnnotationView *annotationView = (MKPinAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
    if (annotationView == nil) {
        annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
    } else {
        annotationView.annotation = annotation;
    }
    annotationView.enabled = YES;
    //HERE, I NEED TO GET THE VALUE OF annotation's VARIABLE IN ORDER TO ASSIGN THE ANNOTATIONVIEW IMAGE
    //annotationView.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:annotation.senderPhotoURL]]];
    return annotationView;
    }
return nil;
}

问题是,当我尝试从annotation(它是 的一个实例)Annotation获取变量的值时,无法访问该变量。我需要做什么来通知程序annotation是 的实例Annotation,以便可以读取变量?

4

1 回答 1

2

尽管您已经证明这annotation是一个Annotation底层,但您需要将其转换为 Annotation 的实际实例,如下所示:

Annotation* yourAnnotation = (Annotation *)annotation;

然后你可以yourAnnotation按照你的期望使用。

于 2013-01-02T08:37:06.967 回答