изменить UIImage из MKAnnotation в MKMapView - PullRequest
1 голос
/ 24 июля 2011

У меня есть mapView только с MKAnnotation, в котором есть изображение костюма.Когда пользователь меняет mapType, мне нужно изменить изображение этой аннотации.

Я сделал так, чтобы удалить аннотацию с карты и вставить другую с правильным изображением, но я не делаюдумаю, это лучший способ.Для отображения нового изображения требуется около 1 или 2 секунд.

Как я могу сделать это, не удаляя аннотацию и не добавляя другую?

Спасибо,

RL

1 Ответ

8 голосов
/ 25 июля 2011

Вы можете использовать метод экземпляра viewForAnnotation: представления карты (не такой, как метод делегата с аналогичным именем), чтобы получить текущий вид аннотации и явно изменить изображение.

Например, в месте, где изменяется тип карты:

MKAnnotationView *av = [mapView viewForAnnotation:annotation];

if (mapView.mapType == MKMapTypeHybrid)
    av.image = [UIImage imageNamed: @"hybrid.png"];
else
    av.image = [UIImage imageNamed: @"standard.png"];

Однако вы должны добавить точно такой же оператор if к методу делегата viewForAnnotation, поэтому, когда представление карты позже вызывает сам метод делегата, оно также установит правильное изображение.

Возможно, вы захотите переместить логику установки изображения в общий метод, который можно вызвать из места, где вы меняете тип карты, и из метода делегата viewForAnnotation (объект MKAnnotationView будет передан в качестве параметра ). Если логика находится в одном месте, вам не нужно помнить, чтобы синхронизировать оба места.

...