我正在编写一个应用程序,它在leftCalloutAccessoryView中显示来自服务器的缩略图。在我实际获得图像之前,我会显示一个地标图像。下载照片后,会调用一个方法,我想更新该图像而不删除原始注释并放置另一个注释。我只想将图像从占位符切换到下载的缩略图。下面的代码不起作用,但如果有人能告诉我我是否在正确的轨道上,那就太棒了。
MyAnnotationClass *annotation=[[MyAnnotationClass alloc] initWithCoordinate:item.location];
[annotation setItem:item];
if(item.title){
annotation.name=item.title;
}
else{
annotation.name=@"no title";
}
[annotation setDescription:[[NSString alloc] initWithFormat:@"Views:%d Likes:%d Comments:%d",item.views,item.likes,item.comments]];
[annotation setImage:[[photo.thumb copyWithDimensions: CGSizeMake(32.0, 32.0)] autorelease]];
MKAnnotationView *av=[__mapView viewForAnnotation:annotation];
UIImageView *imageView=[[UIImageView alloc] initWithImage:annotation.image];
imageView.frame=CGRectMake(0.0, 0.0, 32.0, 32.0);
av.leftCalloutAccessoryView=imageView;
[annotation release];
我一直在这里寻找相当长的时间,但我找不到的任何东西都能满足我的需要。感谢
答案 0 :(得分:4)
如果注释已经在地图上并且您想要更新它,请不要创建新注释。
而是在地图视图的annotations
数组中找到要更新的注释并更新其属性。然后在现有注释上调用viewForAnnotation:
并更新leftCalloutAccessoryView
。
此外,请确保viewForAnnotation
委托方法具有通过检查注释的属性将leftCalloutAccessoryView
设置为占位符图像或实际图像的逻辑(并非总是如此)占位符图片)。
This other question有一些可能有帮助的示例代码。