2010-03-11 2 views
3

я делаю следующие и всегда получают зеленые булавки:MapKit булавка цвет не меняется

pin.pinColor = MKPinAnnotationColorRed; 
     [self.mapView addAnnotation:pin]; 
     [pin release]; 

штифт типа «NSObject». Все контакты выходят как зеленые. Должен ли я делать это по-другому?

ответ

7

Убедитесь, что ваш класс штыря реализует протокол MKAnnotation, и я считаю, что для получения нестандартного цвета штыря вам необходимо реализовать метод viewForAnnotation.

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation 
{ 
    MKPinAnnotationView *newAnnotation = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"redpin"]; 
    newAnnotation.pinColor = MKPinAnnotationColorRed; 
    newAnnotation.animatesDrop = YES; 
    newAnnotation.canShowCallout = YES; 
    return newAnnotation; 
} 
+0

Спасибо. Это похоже на разметку таблицы. Должен ли я сначала проверить значение null на newAnnotion и вернуть экземпляр, если он уже существует? – 4thSpace

+0

Да, это то, что рекомендуют документы, но для моих целей я не беспокоился. Проверьте ссылку для viewForAnnotation. Он упоминает метод dequeueReusableAnnotationViewWithIdentifier. – DyingCactus

+0

Вы определенно должны, поскольку у вас могло бы быть много аннотаций. Я также советую вам проверить тип аннотации, который предоставлен, например, если tit является аннотацией MKUserLocation, чтобы вы могли вернуть нуль. –

Смежные вопросы