创建后更改注释图像

jfi*_*isk 5 mkmapview ios ios5

我有一个自定义注释,使用viewForAnnotation委托方法基于注释的类型设置其图像.我只使用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"];
Run Code Online (Sandbox Code Playgroud)

if声明(或你必须设置任何逻辑image)是一部分也应在viewForAnnotation委托方法.