2012-10-12 17 views
6

dodawać adnotacje na mapie, aby w ten sposób:Zmiana pin kolor 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]; 

Kołki są czerwone, i chciałbym im wszystkim zieleń. Jak mogę zmienić kolor? Próbowałem następujących, ale nadal daje czerwony znak:

annotationPoint2.pinColor = MKPinAnnotationColorGreen; 

Odpowiedz

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

ten kod działa, ale nawet bieżącej lokalizacji użytkownika staje się zielony, nawet jeśli chcę to niebieski z okręgów wokół niego. Jak mogę to zrobić? – Alessandro

+4

if ([[tytuł komentarza] toEqualToString: @ "Aktualna lokalizacja"]) { annView.pinColor = MKPinAnnotationColorGreen; } else {annView.pinColor = MKPinAnnotationColorRed;} – casillas

+0

@Alessandro Musisz zwrócić zero gdy adnotacja == mapView.userLocation, aby pokazać niebieską kropkę dla lokalizacji użytkownika i okręgu wokół niego – amitshinik

5

Obiekt pinColor jest zdefiniowana w klasie MKPinAnnotationView (nie protokołu MKAnnotation).

Tworzysz MKPinAnnotationView w metodzie delegata viewForAnnotation. Jeśli nie zaimplementowałeś tego delegata, domyślnie otrzymujesz standardowe czerwone szpilki.

W tej metodzie delegata utworzysz instancję MKPinAnnotationView i możesz ustawić jej pinColor na zielony.

1

Swift3 to w ten sposób:

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 
}