cambiar la imagen de la anotación después de su creación

Tengo una anotación personalizada que establece su imagen según el tipo de anotación mediante el método de delegado viewForAnnotation. Solo estoy usando 1 anotación que representa un automóvil en movimiento y quiero cambiar la imagen para cuando se detecta que el automóvil se está moviendo y se detiene. ¿Cómo podría hacer esto además de eliminar mi anotación y volver a agregarla, lo que provoca un parpadeo?

preguntado el 03 de mayo de 12 a las 22:05

1 Respuestas

Dondequiera que detecte que el estado del automóvil ha cambiado, recupere la vista actual de la anotación usando el MKMapView ejemplo Método viewForAnnotation:. Esto no es lo mismo que el mapView:viewForAnnotation: delegar método.

Después de obtener la vista actual de la anotación, puede modificar sus propiedades, incluidas image.

También asegúrese de que el mapView:viewForAnnotation: método de delegado tiene la misma condición exacta para establecer image basado en el estado de la anotación del automóvil. Es posible que desee poner la lógica en un método común llamado desde ambos lugares (donde cambia el estado y el método de delegado) para que el código no se duplique.

Por ejemplo, cuando cambia el estado, es posible que tenga:

//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"];

La if declaración (o cualquier lógica que tenga que establecer image) es la parte que también debe estar en el viewForAnnotation método delegado.

contestado el 04 de mayo de 12 a las 13:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.