mapkit i adnotacje

głosy
0

Jestem bardzo nowe do XCode i iPhone rozwoju, więc proszę pokrywa się ze mną, jeśli to pytanie jest zbyt proste. Ale mam mapę i I zostały pomyślnie dodane obrazy (nie szpilki), aby go dla moich adnotacji. I mogę zmienić obraz, gdy użytkownik wybierze jedną z adnotacji.

Utworzono klasę, która dziedziczy MKAnnotationView z następujących metod: -

- (id)initWithAnnotation:

- (void)setAnnotation:

- (void)drawRect:

i używam

- (void)touchesBegan

wiedzieć, kiedy został wybrany adnotacja. Aw touchesBegan robie: -

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

aby zmienić obraz. Ale co ja naprawdę zakłopotany na to w jaki sposób mogę zmienić obraz z powrotem na to oryginalny obraz, gdy użytkownicy wybiera następną adnotacji. Próbowałem:-

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

Ale błędy

i próbowałem

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

}

Powyższy kod działa ok, dopóki mogę ann.image = I; Następnie błędów. Błędy dostaję to: -

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

Tak widzę, że moje miejsce obiekt nie ma obrazu więc dlatego to będzie źle. Ale jeśli utworzyć właściwość obrazu na moim miejscu obiektu - jak to zmienić obraz adnotacje, które co próbuję zrobić.

Proszę doradzić jak ja jeździmy w kółko na ten jeden na 2 dni teraz !!!!

Z góry dzięki Cheryl

Utwórz 29/10/2009 o 15:56
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
0

Cheryl,

Nie całkowicie śledzić, co próbujesz zrobić, ale oto kilka myśli:

Oto, co chciałbym zrobić, aby przywrócić oryginalny obraz:

W swojej podklasy MKAnnotationView, dodać dwie właściwości UIImage,

firstImage i secondImage, skonfigurować zachowanie.

Gdy init widoku opisu, skonfigurować oba obrazy. (W tym miejscu, w którym przypisać zdjęcie do widoku opisu, a także zapisać go do swojej nowej nieruchomości firstImage)

Następnie można powiedzieć

self.image = firstImage;

lub

self.image = secondImage.

Które będą zamieniać odpowiedni obraz w miejscu, zachowując drugi obraz wokół odtworzyć.

Twój kod:

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

nie jest dobrze. Zwraca mapę do tablicy adnotacji, a następnie traktuje je jako wyświetleń adnotacji.

Adnotacja jest obiektem modelu danych. Zawiera on dane opisujące adnotację.

Obiekt adnotacja VIEW jest tymczasowy obiekt Wyświetlacz służy do wyświetlania adnotacji na mapie, jeśli jest aktualnie widoczny. Nie zawsze są widoki adnotacji dla każdej adnotacji na mapie.

Odpowiedział 12/11/2009 o 21:56
źródło użytkownik

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