Получить переменную и подключить ее к MKAnnotationView - PullRequest
0 голосов
/ 09 декабря 2010

У меня есть код, который я даю координаты, заголовок, подзаголовок, информацию о расположении файла изображения.Эта информация используется для создания аннотации для вывода ios mapkit.Заголовок и субтитры автоматически подключаются, и я могу получить другую информацию (расположение файла изображения) после того, как пин-код выбран.Однако я хочу отобразить миниатюру изображения в аннотации (всплывающее окно), но у меня возникают проблемы при настройке его в качестве переменной, чтобы получить его из моей информации, а не жестко кодировать его.Ниже приведен код, который я использую для создания моей карты / пинов.

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
    // Boilerplate pin annotation code
 UIButton *detailButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

 NSString *imageLoc;

    MKPinAnnotationView *pin = (MKPinAnnotationView *) [self.map dequeueReusableAnnotationViewWithIdentifier: @"restMap"];
    if (pin == nil) {
        pin = [[[MKPinAnnotationView alloc] initWithAnnotation: annotation reuseIdentifier: @"restMap"] autorelease];

    } else { 
        pin.annotation = annotation;
 }

    pin.pinColor = MKPinAnnotationColorRed;
    pin.canShowCallout = YES;
    pin.animatesDrop = YES;

 NSString *imageLoc= ????????????

 UIImageView *leftIconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:imageLoc]];
    pin.leftCalloutAccessoryView = leftIconView;

    [detailButton addTarget:self action:@selector(showDetailView:) forControlEvents:UIControlEventTouchUpInside];
    pin.rightCalloutAccessoryView = detailButton;
    return pin;
}

@interface MapPin : NSObject <MKAnnotation> {

    CLLocationCoordinate2D coordinate;
    NSString *subtitle; 
    NSString *title; 
 NSString *indexnumber;
 NSString *imageFile;
}

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic, readonly) NSString *title;
@property (nonatomic, readonly) NSString *subtitle;
@property (nonatomic, readonly) NSString *indexnumber;
@property (nonatomic, readonly) NSString *imageFile;

-(id)initWithCoordinates:(CLLocationCoordinate2D)location
               placeName: placeName
             description:description
    indexnum:indexnum
   imageFileLoc:imageFileLoc;

@end


#import "MapPin.h"

@implementation MapPin

@synthesize coordinate;
@synthesize title;
@synthesize subtitle;
@synthesize indexnumber;
@synthesize imageFile;

-(id)initWithCoordinates:(CLLocationCoordinate2D)location
               placeName: placeName
             description:description
    indexnum:indexnum
   imageFileLoc:imageFileLoc{

    self = [super init];
    if (self != nil) {
  imageFile=imageFileLoc;
  [imageFile retain];
  indexnumber=indexnum;
  [indexnumber retain];
        coordinate = location;
        title = placeName;
        [title retain];
        subtitle = description;
        [subtitle retain];
    }
    return self;    
}

1 Ответ

0 голосов
/ 09 декабря 2010

Что доступно из объекта аннотации? Вы пробовали следующее?

NSString *imageLoc = [annotation respondsToSelector:@selector(imageFile)] ? [annotation imageFile] : @"some_default_value";
...