MapKit e annotazioni

voti
0

Sono molto nuovo per XCode e iPhone lo sviluppo in modo prega di portare con me se questa domanda è troppo semplice. Ma ho una mappa e ho le immagini (non pin) ad esso aggiunti con successo per le mie annotazioni. E posso cambiare l'immagine quando l'utente seleziona una delle annotazioni.

Ho creato una classe che eredita da MKAnnotationView con le seguenti modalità: -

- (id)initWithAnnotation:

- (void)setAnnotation:

- (void)drawRect:

e sto usando

- (void)touchesBegan

di sapere quando è stata selezionata un'annotazione. E in touchesBegan che sto facendo: -

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

per cambiare l'immagine. Ma quello che sto veramente perplesso su è come faccio a cambiare l'immagine di nuovo alla sua immagine originale quando gli utenti seleziona la prossima annotazione. Ho provato:-

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

Ma gli errori

e ho provato

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;
}
}

}

il codice di cui sopra funziona bene fino a quando riesco a ann.image = i; allora gli errori. Gli errori che ricevo sono: -

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

Si posso vedere che il mio posto oggetto non dispone di un'immagine in modo che è per questo che sta andando male. Ma se creo una proprietà immagine sul mio posto oggetto - come sarà che cambiare l'immagine di annotazioni che quello che sto cercando di fare.

Si prega di avvisare come mi sono state andando in giro in tondo su questo per 2 giorni ora !!!!

Grazie in anticipo Cheryl

È pubblicato 29/10/2009 alle 15:56
fonte dall'utente
In altre lingue...                            


1 risposte

voti
0

Cheryl,

Non del tutto seguo quello che stai cercando di fare, ma qui ci sono alcune riflessioni:

Ecco quello che vorrei fare per ripristinare l'immagine originale:

Nella vostra sottoclasse di MKAnnotationView, aggiungere due proprietà UIImage,

firstImage e secondImage, istituito per conservare.

Quando init vista annotazione, configurare entrambe le immagini. (Nel punto in cui si assegna l'immagine alla vista annotazione, risparmi anche per la nuova proprietà firstImage)

Quindi, si può dire

self.image = firstImage;

o

self.image = secondImage.

Che scambiare l'immagine appropriata al suo posto, pur mantenendo l'altra immagine in giro per il ripristino.

Il tuo codice:

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

non è giusto. Chiede la mappa per una serie di annotazioni, e poi li tratta come viste di annotazione.

Un'annotazione è un oggetto di modello di dati. Esso contiene i dati che descrivono un'annotazione.

Un oggetto di annotazione VIEW è un oggetto di visualizzazione temporanea utilizzata per visualizzare un'annotazione sulla mappa se è attualmente visibile. Non ci sono sempre viste di annotazione per ogni annotazione sulla mappa.

Risposto il 12/11/2009 a 21:56
fonte dall'utente

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