Как полагает Apple, док Annotating Maps. Нужно создать пользовательский класс аннотаций, пожалуйста, обратитесь к следующему коду.
MyAnnotation.h
@interface MyAnnotation : NSObject<MKAnnotation>
{
CLLocationCoordinate2D coordinate;
NSString *title;
NSString *subtitle;
NSString *type;
}
@property (nonatomic, assign) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;
@property (nonatomic, copy) NSString *type;
@end
MyAnnotation.m
@implementation MyAnnotation
@synthesize coordinate;
@synthesize title;
@synthesize subtitle;
@synthesize type;
@end
yourViewControll.m - Где вы показываете карту.
Создать аннотацию и установить свойство типа
MyAnnotation *Ann = [[MyAnnotation alloc] init];
offAnn.coordinate = offLocation.coordinate;
offAnn.title = @"My Office";
offAnn.type = @"Office";
[_mapView removeAnnotation: offAnn];
[_mapView addAnnotation: offAnn];
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
NSLog(@"viewForAnnotation Called");
if ([annotation isKindOfClass:[MyAnnotation class]])
{
MyAnnotation *myAnn=(MyAnnotation *)annotation;
MKAnnotationView *pinView = (MKAnnotationView*)[self.mapView dequeueReusableAnnotationViewWithIdentifier:@"MyAnnotation"];
if (!pinView)
{
pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"MyAnnotation"];
//pinView.animatesDrop = YES;
pinView.canShowCallout = YES;
pinView.calloutOffset = CGPointMake(0, 4);
} else {
pinView.annotation = annotation;
}
if([myAnn.type isEqual: @"Office"]) {
pinView.image = [UIImage imageNamed:@"office.png"];
}
return pinView;
}
return nil;
}