1

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

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

在不删除注释并删除另一个注释的情况下如何做到这一点?

谢谢,

强化学习

4

1 回答 1

8

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

比如在地图类型发生变化的地方:

MKAnnotationView *av = [mapView viewForAnnotation:annotation];

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

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

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

于 2011-07-24T20:40:12.107 回答