我有一个只有 MKAnnotation 的 mapView,它有一个服装图像。当用户更改 mapType 时,我需要更改该注释的图像。
我这样做的方法是从地图中删除注释,然后插入另一个带有正确图像的注释,但我认为这不是最好的方法。显示新图像大约需要 1 到 2 秒。
在不删除注释并删除另一个注释的情况下如何做到这一点?
谢谢,
强化学习
我有一个只有 MKAnnotation 的 mapView,它有一个服装图像。当用户更改 mapType 时,我需要更改该注释的图像。
我这样做的方法是从地图中删除注释,然后插入另一个带有正确图像的注释,但我认为这不是最好的方法。显示新图像大约需要 1 到 2 秒。
在不删除注释并删除另一个注释的情况下如何做到这一点?
谢谢,
强化学习
您可以使用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
对象将作为参数传递)调用的通用方法。如果逻辑在一个地方,您不必记住让两个地方保持同步。