2012-10-12 93 views
6

我添加註釋到我這樣的地圖:改變引腳顏色的MKMapView

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; 

回答

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

此代碼的工作,但即使當前用戶的位置變成綠色,即使我想它藍色的圓圈繞着它。我怎樣才能做到這一點? – Alessandro

+4

if([[annotation title] isEqualToString:@「Current Location」]) annular.pinColor = MKPinAnnotationColorGreen; } else {annView.pinColor = MKPinAnnotationColorRed;} – casillas

+0

@Alessandro您需要在註解==時返回nil == mapView.userLocation顯示用戶位置的藍點以及圍繞它的圓點 – amitshinik

5

pinColor屬性在MKPinAnnotationView類(不是MKAnnotation協議)定義。

您在viewForAnnotation委託方法中創建MKPinAnnotationView。如果你還沒有實現這個委託,默認情況下你會得到標準的紅色引腳。

在該委託方法中,您將創建MKPinAnnotationView的實例,並且您可以將它的pinColor設置爲綠色。

1

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 
}