5

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

4

1 回答 1

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委托方法中应该包含的部分。

于 2012-05-04T12:27:12.047 回答