创build后更改注释图像

我有一个自定义注释,它使用viewForAnnotation委托方法基于注解的types设置其图像。 我只使用1个注释来表示汽车正在移动,并且想要在汽车被检测到正在移动和停止时改变图像。 除了删除我的注释并重新添加引起眨眼之外,我怎么能去解决这个问题呢?

无论您检测到汽车状态发生变化,都可以使用MKMapView 实例方法viewForAnnotation:来检索注解的当前视图。 这与mapView:viewForAnnotation: delegate方法不一样。

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

还要确保mapView:viewForAnnotation: delegate方法具有相同的确切条件,以根据汽车注释的状态设置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委托方法中的一部分。