Mapkit - 在点击时更改注释图像

时间:2011-08-29 10:10:24

标签: iphone annotations mapkit

我是iphone开发的新手。我在地图上添加了注释。我能够在didSelectAnnotationView()中捕获注释上的点击事件。但我想在用户点击它时更改注释的图像。

3 个答案:

答案 0 :(得分:4)

设置图像属性。

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

修改

所以,你似乎在使用MKPinAnnotationView 它具有pinColor属性。

因此,您可以将其更改为

pin.pinColor = MKPinAnnotationColorRed; // green and purple are 2 other colors.

答案 1 :(得分:1)

如果您使用的是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"];
} 

答案 2 :(得分:1)

斯威夫特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)
    }