Вы можете использовать метод экземпляра 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
будет передан в качестве параметра ). Если логика находится в одном месте, вам не нужно помнить, чтобы синхронизировать оба места.