从MKMapView中的MKAnnotation更改UIImage

Rui*_*pes 1 uiimage mapkit mkmapview mkannotationview ios

我有一个只有MKAnnotation的mapView,它有一个服装图像.当用户更改mapType时,我需要更改该注释的图像.

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

如何在不删除注释的情况下执行此操作并删除另一个注释?

谢谢,

RL

小智 8

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

例如,在地图类型更改的位置:

MKAnnotationView *av = [mapView viewForAnnotation:annotation];

if (mapView.mapType == MKMapTypeHybrid)
    av.image = [UIImage imageNamed: @"hybrid.png"];
else
    av.image = [UIImage imageNamed: @"standard.png"];
Run Code Online (Sandbox Code Playgroud)

但是,您应该将相同的if语句添加到viewForAnnotation委托方法中,因此当地图视图稍后调用委托方法本身时,它也将设置正确的图像.

您可能希望将图像设置逻辑移动到可以从更改地图类型的位置和viewForAnnotation委托方法调用的常用方法(该MKAnnotationView对象将作为参数传递).如果逻辑在一个地方,您不必记住保持两个地方同步.