mapkit и аннотации - PullRequest
       20

mapkit и аннотации

0 голосов
/ 29 октября 2009

Я очень новичок в разработке XCode и iPhone, поэтому, пожалуйста, потерпите меня, если этот вопрос слишком прост. Но у меня есть карта, и я успешно добавил изображения (не булавки) к ней для моих аннотаций. И я могу изменить изображение, когда пользователь выбирает одну из аннотаций.

Я создал класс, который наследуется от MKAnnotationView с помощью следующих методов: -

- (id)initWithAnnotation:

- (void)setAnnotation:

- (void)drawRect:

и я использую

- (void)touchesBegan

чтобы узнать, когда была выбрана аннотация. И в прикосновениях начал делать: -

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

чтобы изменить изображение. Но что меня действительно озадачило, так это как я могу изменить изображение обратно на его исходное изображение, когда пользователи выбирают следующую аннотацию. Я пытался: -

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

но это ошибки

и я попробовал

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

}

приведенный выше код работает нормально, пока я не доберусь до ann.image = i; тогда это ошибки. Я получаю следующие ошибки: -

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

Да, я вижу, что у моего объекта на месте нет изображения, поэтому оно идет не так, как надо. Но если я создаю свойство изображения на моем объекте place - как это изменит изображение аннотации, что я и пытаюсь сделать.

Посоветуйте, пожалуйста, так как я ходил кругами по этому уже 2 дня !!!!

Заранее спасибо Шерил

1 Ответ

0 голосов
/ 12 ноября 2009

Шерил

Я не совсем понимаю, что вы пытаетесь сделать, но вот некоторые мысли:

Вот что я бы сделал, чтобы восстановить исходное изображение:

В вашем подклассе MKAnnotationView добавьте два свойства UIImage,

firstImage и secondImage, настроенные на сохранение.

Когда вы запускаете просмотр аннотаций, настройте оба изображения. (В тот момент, когда вы назначаете изображение для представления аннотации, также сохраните его в своем новом свойстве firstImage)

Тогда вы можете сказать

self.image = firstImage;

или

self.image = secondImage.

Это позволит заменить соответствующее изображение на место, оставив при этом другое изображение для восстановления.

Ваш код:

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

не правильно. Он запрашивает у карты массив аннотаций, а затем обрабатывает их как ВИДЫ аннотаций.

Аннотация - это объект модели данных. Содержит данные, описывающие аннотацию.

Объект VIEW для аннотаций - это временный экранный объект, используемый для отображения аннотации на карте, если она видна в данный момент. Не всегда есть виды аннотаций для каждой аннотации на карте.

...