用户点击时更改引脚颜色

时间:2011-08-18 13:37:43

标签: iphone mapkit mkannotation mkannotationview

当用户引脚添加更改标题和副标题时,我会将注释的颜色从红色更改为绿色。

我真的迷路了。我搜索了如何制作自定义注释引脚,好的。当用户触摸引脚didSelectAnnotationView时,我找到了该方法的实现,当我点击注释NSLog(@"Tap") ;时,它可以正常工作,但现在我无法更改被触摸的引脚。

非常感谢大家的贡献。

3 个答案:

答案 0 :(得分:5)

要设置引脚颜色,请使用MKPinAnnotationView pinColor属性。

MKPinAnnotationView *pin = [[MKPinAnnotationView alloc] init]
pin.pinColor = MKPinAnnotationColorGreen;

对于自定义注释图像,请设置图像属性。

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

请注意MKPinAnnotationView animateDrop属性不适用于自定义图像。有一种方法可以复制那个动画。见How do I animate MKAnnotationView drop?

<强>更新 所以,如果您想在被选中时从红色变为绿色,那么您可以这样做。

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKPinAnnotationView *)view {
    view.pinColor = MKPinAnnotationColorGreen;

}

- (MKAnnotationView *)mapView:(MKMapView *)aMapView
            viewForAnnotation:(id)ann {

    NSString *identifier = @"myPin";
    MKPinAnnotationView *annView = (MKPinAnnotationView *)
    [aMapView dequeueReusableAnnotationViewWithIdentifier:identifier];
    if (annView == nil) {
        annView= [[[MKPinAnnotationView alloc] initWithAnnotation:ann
                                               reuseIdentifier:identifier]
               autorelease];
    } else {
        annView.annotation = ann;
    }
// you can define the properties here.

return annView;
}

答案 1 :(得分:4)

在您的方法中设置pinColor的{​​{1}}属性,如下所示:

MKAnnotationView

答案 2 :(得分:1)

(重新)看一下:

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKPinAnnotationView *)view {
    view.pinColor = MKPinAnnotationColorGreen;

}

这是param中的 MKPinAnnotationView (而不是 MKAnnotationView