Mapkit - изменение изображения аннотации при нажатии - PullRequest
2 голосов
/ 29 августа 2011

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

Ответы [ 3 ]

4 голосов
/ 29 августа 2011

Установите свойство изображения, как таковое.

annView.image = [UIImage imageNamed:@"AnnotationIcon.png"];

EDIT

Итак, вы, похоже, используете MKPinAnnotationView , который имеет свойство pinColor.

Следовательно, вы можете изменить его как таковое

pin.pinColor = MKPinAnnotationColorRed; // green and purple are 2 other colors.
1 голос
/ 24 июня 2017

Свифт 3: Я предполагаю, что вы уже используете эту функцию для пользовательских представлений MKAnnotation

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {...}

и я обновлю @ djibouti33 ответ от Objective-c до Swift 3:

    func mapView(_ mapView: MKMapView, didDeselect view: MKAnnotationView) {
        view.image = UIImage(named: "unselected_marker")
        view.frame = CGRect(x: 0, y: 0, width: 40, height: 40)//keep the new icon size resobable.
     }

    func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
        view.image = UIImage(named: "selected_marker")
        view.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
    }
1 голос
/ 08 ноября 2013

Если вы используете MKAnnotationView, а не MKPinAnnotationView, вы можете просто положиться на MKMapViewDelegate методы:

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
    view.image = [UIImage imageNamed:@"selected_image"];
}

- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view
{
    view.image = [UIImage imageNamed:@"deselected_image"];
} 
...