Я бы предложил вам создать пользовательский MKAnnotation
и иметь пользовательское свойство (наиболее вероятно, перечисление typedef), чтобы различать различные типы аннотаций.
typedef enum {
Food,
Gas,
Shopping
} AnnotationType
После этого вы можете установить свои цвета условно if (annotation.annotationType == Food) { set pinColor }
Конечно, вы можете использовать оператор switch для AnnotationType
, чтобы иметь более понятный код:
switch(annotation.annotationType) {
case Food:
do something;
break;
case Gas:
do something;
break;
case Shopping:
do something;
break;
}
См. Следующий вопрос для получения дополнительной информации о добавлении большего количества цветов (если вы хотите расширить свое приложение позже):
MKPinAnnotationView: доступно более трех цветов?
Вот фрагмент кода из учебника , в котором показаны тяжелые модификации:
calloutMapAnnotationView.contentHeight = 78.0f;
UIImage *asynchronyLogo = [UIImage imageNamed:@"asynchrony-logo-small.png"];
UIImageView *asynchronyLogoView = [[[UIImageView alloc] initWithImage:asynchronyLogo] autorelease];
asynchronyLogoView.frame = CGRectMake(5, 2, asynchronyLogoView.frame.size.width, asynchronyLogoView.frame.size.height);
[calloutMapAnnotationView.contentView addSubview:asynchronyLogoView];
НТН