更改引脚颜色MKMapView

时间:2012-10-12 12:58:34

标签: ios mkmapview mkpinannotationview

我以这种方式向地图添加注释:

MyAnnotation *annotationPoint2 = [[MyAnnotation alloc] init];
annotationPoint2.coordinate = anyLocation;
annotationPoint2.title = [NSString stringWithFormat:@"%@", obj];
annotationPoint2.subtitle = @"";  //or set to nil
annotationPoint2.keyValue = [NSString stringWithFormat:@"%@", key];
[mapPins addAnnotation:annotationPoint2];

针脚都是红色的,我希望它们都是绿色的。我怎样才能改变颜色?我尝试过以下方法,但仍然给出了红色标记:

annotationPoint2.pinColor = MKPinAnnotationColorGreen;

3 个答案:

答案 0 :(得分:20)

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation 
  {
    MKPinAnnotationView *annView=[[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:@"pin"];
    annView.pinColor = MKPinAnnotationColorGreen;
    return annView;
  }

答案 1 :(得分:5)

pinColor属性在MKPinAnnotationView类(而不是MKAnnotation协议)中定义。

您在MKPinAnnotationView委托方法中创建viewForAnnotation。如果您尚未实现该委托,则默认情况下会获得标准红色引脚。

在该委托方法中,您创建了MKPinAnnotationView的实例,并且可以将其pinColor设置为绿色。

答案 2 :(得分:4)

Swift3就是这样:

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

    let annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "pin")

    if annotation.title! == "My Place" {

        annotationView.pinTintColor = UIColor.green

    } else {

        annotationView.pinTintColor = UIColor.red
    }


    return annotationView
}