ios - 从 MKMapView 中的 MKAnnotation 更改 UIImage

标签 ios uiimage mkmapview mkannotationview mapkit

我有一个只有 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/

相关文章:

iphone - 将 PDF 加载到 UIImage 或 UIImageView 中?

ios - 将 MKMapView 移动到相对于父 View 的特定位置

iphone - 如何在 Core Data 中分配相关对象?

ios - 在单个实例上调用函数?

ios - MapKit自动布局约束问题

ios - 如何检测像 Maps.app 这样的 MKPolylines/Overlays 上的点击?

ios - 如果用户在 mkmapview 中选择 "Dont Allow",如何要求用户输入位置或硬编码纬度/经度对?

ios - 如何在单击 Collection View 上的单元格时在详细 View 上获得相同的图像?

ios - 修改 UIGraphicsContext 中的原始 UIImage

ios - iphone os 5 - 发送到实例的无法识别的选择器