用户点击时更改引脚颜色

Ant*_*nio 3 iphone mapkit mkannotation mkannotationview

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

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

非常感谢大家的贡献.

再见

Gav*_*vin 5

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

MKPinAnnotationView *pin = [[MKPinAnnotationView alloc] init]
pin.pinColor = MKPinAnnotationColorGreen;
Run Code Online (Sandbox Code Playgroud)

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

UIImage *annImage = [UIImage imageNamed:@"AnnotationIcon.png"];
annView.image = annImage;
Run Code Online (Sandbox Code Playgroud)

请注意,MKPinAnnotationView animateDrop属性不适用于自定义图像.有一种方法可以复制那个动画.请参阅如何为MKAnnotationView动画下拉?

更新 所以,基本上,如果您想在被选中时从红色变为绿色,则执行此操作.

- (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;
}
Run Code Online (Sandbox Code Playgroud)

  • pinColor是MKPinAnnotationView对象的属性,而不是MKAnnotationView. (2认同)