我有一个只有 MKAnnotation 的 mapView,它有一个服装图像。当用户更改 mapType 时,我需要更改该注释的图像。
我这样做的方法是从 map 中删除注释,然后插入另一个带有正确图像的注释,但我认为这不是最好的方法。显示新图像大约需要 1 到 2 秒。
在不删除注释并删除另一个注释的情况下如何做到这一点?
谢谢,
强化学习
最佳答案
您可以使用 viewForAnnotation:
map View 的实例方法(与其名称相似的委托(delegate)方法不同)以获取注释的当前 View 并显式强制更改图像。
比如在 map 类型发生变化的地方:
MKAnnotationView *av = [mapView viewForAnnotation:annotation];
if (mapView.mapType == MKMapTypeHybrid)
av.image = [UIImage imageNamed: @"hybrid.png"];
else
av.image = [UIImage imageNamed: @"standard.png"];
但是,您应该在
viewForAnnotation
中添加完全相同的 if 语句。委托(delegate)方法也是如此,所以本地图 View 稍后调用委托(delegate)方法本身时,它也会设置正确的图像。您可能希望将图像设置逻辑移动到一个通用方法,您可以从更改 map 类型的位置和
viewForAnnotation
调用该方法。委托(delegate)方法(MKAnnotationView
对象将作为参数传递)。如果逻辑在一个地方,您不必记住让两个地方保持同步。
关于ios - 从 MKMapView 中的 MKAnnotation 更改 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6808792/