2012-10-12 17 views
6

I Anmerkungen hinzufügen zu meiner Karte auf diese Weise:ändern Stiftfarbe 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]; 

Die Stifte alle rot sind, und ich würde sie alle grün mögen. Wie kann ich die Farbe ändern? Ich habe folgendes versucht, aber es gibt immer noch eine rote Markierung:

annotationPoint2.pinColor = MKPinAnnotationColorGreen; 

Antwort

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

dieser Code funktioniert, aber auch der aktuelle Standort des Nutzers wird grün, auch wenn ich es mit den Kreisen um sie herum blau wollen. Wie kann ich das machen? – Alessandro

+4

if ([[Anmerkungstitel] isEqualToString: @ "Aktueller Standort"]) { annView.pinColor = MKPinAnnotationColorGreen; } else {annView.pinColor = MKPinAnnotationColorRed;} – casillas

+0

@Alessandro Sie müssen Nil zurückgeben, wenn Annotation == mapView.userLocation den blauen Punkt für die Benutzerposition und den Kreis zeigt. – amitshinik

5

Die pinColor Eigenschaft ist definiert in der MKPinAnnotationView Klasse (nicht das MKAnnotation-Protokoll).

Sie erstellen eine MKPinAnnotationView in der Delegiertenmethode viewForAnnotation. Wenn Sie diesen Delegaten nicht implementiert haben, erhalten Sie standardmäßig rote Standardstifte. In dieser Delegate-Methode erstellen Sie eine Instanz von MKPinAnnotationView, und Sie können pinColor auf grün setzen.

1

swift3 ist auf diese Weise:

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 
}