创建后更改注释图像

时间:2012-05-03 21:06:42

标签: ios ios5 mkmapview

我有一个自定义注释,它使用viewForAnnotation委托方法根据注释的类型设置其图像。我只使用1个注释代表汽车移动,并希望在检测到汽车移动和停止时更改图像。除了删除我的注释并重新添加它以引起眨眼之外,我怎么能这样做呢?

1 个答案:

答案 0 :(得分:11)

无论您何时检测到汽车的状态已发生变化,请使用MKMapView 实例方法viewForAnnotation:检索注释的当前视图。这与mapView:viewForAnnotation: 委托方法不同。

获取注释的当前视图后,您可以修改其属性,包括image

还要确保mapView:viewForAnnotation:委托方法具有与基于汽车注释状态设置image完全相同的条件。您可能希望将逻辑放在从两个位置调用的公共方法中(状态更改和委托方法),因此代码不会重复。

例如,状态发生变化时,您可能会:

//carAnnotation is your id<MKAnnotation> object
MKAnnotationView *av = [mapView viewForAnnotation:carAnnotation];
if (carAnnotation.isMoving)
    av.image = [UIImage imageNamed:@"moving.png"];
else
    av.image = [UIImage imageNamed:@"stopped.png"];

if语句(或您必须设置的任何逻辑image)是viewForAnnotation委托方法中也应包含的部分。