在MKMapView中从MKAnnotation改变UIImage

我有一个只有在MKAnnotation,有一个服装形象的地图视图。 当用户更改mapType时,我需要更改该注释的图像。

我这样做的方式是从地图上删除注释,并插入另一个正确的图像,我不认为是最好的方式。 大约需要1秒钟2秒才能显示新图像。

我怎样才能做到这一点,而不删除注释,并删除另一个?

谢谢,

RL

您可以使用地图视图的viewForAnnotation: instance方法(与具有相似名称的委托方法不同)来获取注释的当前视图,并强制显式更改图像。

例如,在地图types改变的地方:

 MKAnnotationView *av = [mapView viewForAnnotation:annotation]; if (mapView.mapType == MKMapTypeHybrid) av.image = [UIImage imageNamed: @"hybrid.png"]; else av.image = [UIImage imageNamed: @"standard.png"]; 

但是,您应该向viewForAnnotation委托方法添加完全相同的if语句,以便稍后地图视图调用委托方法本身时,也会设置正确的图像。

您可能希望将图像设置逻辑移到可以从更改地图types的位置和viewForAnnotation委托方法(将MKAnnotationView对象作为parameter passing)中调用的常用方法。 如果逻辑在一个地方,你不必记住保持两个地方同步。