mapkit y anotaciones

votos
0

Soy muy nuevo en el desarrollo de XCode y iPhone, así que por favor tengan paciencia si esta pregunta es demasiado simple. Pero tengo un mapa y he agregado imágenes (no pines) con éxito para mis anotaciones. Y puedo cambiar la imagen cuando el usuario selecciona una de las anotaciones.

Creé una clase que hereda de MKAnnotationView con los siguientes métodos:

- (id)initWithAnnotation:

- (void)setAnnotation:

- (void)drawRect:

y estoy usando

- (void)touchesBegan

saber cuándo se ha seleccionado una anotación Y en touchesBegan estoy haciendo:

UIImage *i = [UIImage imageNamed:@A.png];
self.image = i;

para cambiar la imagen Pero lo que realmente estoy perplejo es cómo puedo cambiar la imagen a su imagen original cuando los usuarios seleccionan la siguiente anotación. Yo he tratado:-

NSArray *selectedAnnotations = map.selectedAnnotations;
for(id annotationView in selectedAnnotations) {
[map deselectAnnotation:[annotationView annotation] animated:NO];
}

pero comete errores

y lo intenté

for (MKAnnotationView *ann in map.selectedAnnotations){
if ([ann isMemberOfClass:[Place class]])
{
place = (Place *)ann;
NSLog(@second = %@@ %f@ %f, place.title, place.longitude, place.latitude);
if (currentPlaceID == place.placeID) {
//UIImage *i = [UIImage imageNamed:@A.png];

//ann.image = i;
}
else {
UIImage *i = [UIImage imageNamed:@pin.png];

ann.image = i;
}
}

}

el código anterior funciona bien hasta que llegue a ann.image = i; entonces comete un error. Los errores que obtengo son:

*** -[Place setImage:]: unrecognized selector sent to instance 0x4514370
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[Place setImage:]: unrecognized selector sent to instance 0x4514370'

Sí, puedo ver que mi objeto de lugar no tiene una imagen, por eso está yendo mal. Pero si creo una propiedad de imagen en mi objeto de lugar, ¿cómo va a cambiar la imagen de las anotaciones lo que intento hacer?

Por favor, avisar ya que he estado dando vueltas en círculos en este durante 2 días.

Gracias de antemano Cheryl

Publicado el 29/10/2009 a las 15:56
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Cheryl,

No sigo completamente lo que estás tratando de hacer, pero aquí hay algunos pensamientos:

Esto es lo que haría para restaurar la imagen original:

En tu subclase de MKAnnotationView, agrega dos propiedades de UIImage,

firstImage y secondImage, configurados para retener.

Cuando inicie la vista de anotación, configure ambas imágenes. (En el punto donde asigna la imagen a su vista de anotación, también guárdela en su nueva propiedad firstImage)

Entonces, puedes decir

self.image = firstImage;

o

self.image = secondImage.

Eso cambiará la imagen apropiada en su lugar, mientras mantiene la otra imagen para restaurar.

Tu codigo:

NSArray *selectedAnnotations = map.selectedAnnotations; for(id annotationView in selectedAnnotations) { [map    
deselectAnnotation:[annotationView annotation] animated:NO]; }

no es correcto. Solicita al mapa una serie de anotaciones y luego las trata como VIEW de anotación.

Una anotación es un objeto de modelo de datos. Contiene los datos que describen una anotación.

Un objeto VIEW de anotación es un objeto de visualización temporal utilizado para mostrar una anotación en el mapa si está actualmente visible. No siempre hay vistas de anotación para cada anotación en el mapa.

Respondida el 12/11/2009 a las 21:56
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more