IPhone: Создать MKAnnotation

Могу ли я создать MKAnnotation, или он только для чтения? У меня есть координаты, но мне нелегко вручную создать MKAnnotation с помощью setCoordinate.

Идеи?

Ответы

Ответ 1

MKAnnotation - это протокол. Поэтому вам нужно написать свой собственный объект аннотации, который реализует этот протокол. Поэтому ваш заголовок MyAnnotation выглядит так:

@interface MyAnnotation : NSObject<MKAnnotation> {
    CLLocationCoordinate2D coordinate;
}

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

// add an init method so you can set the coordinate property on startup
- (id) initWithCoordinate:(CLLocationCoordinate2D)coord;

и ваша реализация выглядит как (MyAnnotation.m):

- (id) initWithCoordinate:(CLLocationCoordinate2D)coord
{
    coordinate = coord;
    return self;
}

Итак, чтобы добавить вашу аннотацию к карте:

MyAnnotation * annotation = [[[MyAnnotation alloc] initWithCoordinate:coordinate] autorelease];
[self.mapView addAnnotation:annotation];

Если вы не указали название и субтитры в выноске аннотации, вам нужно добавить свойства заголовка и субтитров.

Ответ 2

В iPhone OS 4 появился новый класс MKPointAnnotation, который представляет собой конкретную реализацию протокола MKAnnotation.