Я использую
- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{
, чтобы нарисовать собственное изображение для пользовательского штифта.Я хотел бы использовать другое изображение для разных контактов.Мне было интересно, как я мог бы определить, какой вывод вызывал эту функцию.
- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{
MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"MyPin"];
annView.canShowCallout = YES;
annView.calloutOffset = CGPointMake(-5, 5);
if ([annView.annotation.title isEqualToString:myLocation]) {
UIImage *pinImage = [UIImage imageNamed:@"myLocationImage.png"];
[annView setImage:pinImage];
} else {
UIImage *pinImage = [UIImage imageNamed:@"resImage.png"];
[annView setImage:pinImage];
}
return annView;
}
РЕДАКТИРОВАТЬ: Пересматривая это для нового проекта, я понял, что создание различных классов выводов было расточительным.Лучшей реализацией было бы установить тип пин-кода, а затем прочитать его из аннотации MKAnnotationView.Пример ниже.
- (MKAnnotationView *)mapView:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>) annotation {
MKPinAnnotationView *pin = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"PinID"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[button addTarget:self action:@selector(viewStoreDetails:) forControlEvents:UIControlEventTouchDown];
pin.rightCalloutAccessoryView = button;
pin.canShowCallout = YES;
pin.calloutOffset = CGPointMake(-5, 5);
Annotation *a = (Annotation *)pin.annotation;
int i = a.locationType;
switch (i) {
case RETAIL:
pin.image = [UIImage imageNamed:@"pin_retail.png"];
break;
case OUTLET:
pin.image = [UIImage imageNamed:@"pin_outlet.png"];
break;
case COMING_SOON:
pin.image = [UIImage imageNamed:@"pin_coming_soon.png"];
break;
case MY_LOCATION:
pin.image = [UIImage imageNamed:@"pin_my_location.png"];
break;
pin.image = [UIImage imageNamed:@"pin_retail.png"];
default:
break;
}
return [pin autorelease];
}