1

我的注释上的图像是第一次添加后的好。每个注释都有一个带有数字的图像。当我滚动地图并调用“viewForAnnotation”方法(第二次)并显示错误的图像时..似乎返回了错误的注释......

查看注释方法:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation{
static NSString *identifier = @"pin";
VBAnnotationView *view = (VBAnnotationView *)[self.MapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if (view == nil) {
    view = [[VBAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
}
return view; }

请注意,VBAnnotationView 是我的自定义 MKAnnotationView。

如果“视图”不为零,则“dequeueReusableAnnotationViewWithIdentifier”找到的视图将返回错误的图像。当我注释掉检查是否“view == nill”时,所有注释上的图像都是正确的。

为了优化,如果注释已经存在,我会检查方法“viewForAnnotation”。取消检查注释是否已存在时,图像将正确显示。

4

1 回答 1

0

dequeueReusableAnnotationViewWithIdentifier 不知道您的注释的“正确”图像是什么。它只是给你一个使用..一旦你得到它,你仍然需要配置它,告诉它它将用于什么注释.

if (view == nil) {
    view = [[VBAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
}
else view.annotation=annotation;
于 2013-02-20T02:52:26.877 回答