Могу ли я создать MKAnnotation
, или это только для чтения? У меня есть координаты, но мне нелегко вручную создать MKAnnotation
с использованием setCoordinate
.iPhone: Создать MKAnnotation
Идеи?
Могу ли я создать MKAnnotation
, или это только для чтения? У меня есть координаты, но мне нелегко вручную создать MKAnnotation
с использованием setCoordinate
.iPhone: Создать MKAnnotation
Идеи?
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];
Если вы wan't заголовок и субтитры в выноске аннотации, вам нужно добавить свойства заголовка и субтитров.
Проверьте проект Apple MapCallouts. Все, что вам нужно, находится в этом файле: http://developer.apple.com/iphone/library/samplecode/MapCallouts/Introduction/Intro.html
Та столько, сколько я искал. –
В iPhone OS 4 есть новый класс MKPointAnnotation, который представляет собой конкретную реализацию протокола MKAnnotation.
Спасибо за указание на это joshrl –
Это очень удобно, если вам нужны только основные аннотации. Благодаря! – radven
MKPointAnnotation * pointAnnotation = [[MKPointAnnotation alloc] init]; pointAnnotation.coordinate = location.coordinate; [mkMapView addAnnotation: pointAnnation]; –
Это то, что мне нужно. Где бы я поставил координату - (id) initWithCoordinate: (CLLocationCoordinate2D); метод? В моем файле .h или .m? –
Нет проблем. Я уточнил ответ с некоторыми подробностями :) – RedBlueThing
По какой-то причине я не получаю метод «-initWithCoord:», обнаруженный при попытке создания и запуска. –