У меня есть MKMapView, делегат которого установлен в Интерфейсном Разработчике и который является сохраненным свойством (также подключенным в Интерфейсном Разработчике) его контроллера представления.Да, я уверен, что они правильно подключены.Я пытаюсь добавить аннотации в mapView, но mapView: viewForAnnotation: не вызывается, и после добавления всех аннотаций с помощью [self.map addAnnotation: annot] печать счетчика массива аннотаций mapView дает ноль.Я понятия не имею, что вызывает это, потому что мой объект MapPerson реализует протокол MKAnnotation со свойством только для чтения координат.Вот мой код для этого бизнеса ...
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
@interface MapPerson : NSObject <MKAnnotation> {
CLLocationCoordinate2D _coo;
}
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@end
И его реализация ...
#import "MapPerson.h"
@implementation MapPerson
@synthesize coordinate=_coo;
- (id)init
{
self = [super init];
if (self) {
// Initialization code here.
}
return self;
}
- (id)initWithCoordinate:(CLLocationCoordinate2D)loc {
self = [super init];
if (self) {
_coo = loc;
}
return self;
}
Я пытаюсь создать эти аннотации в методе делегата из класса обслуживания, которыйизвлекает координаты с сервера на контроллер представления, содержащий mapView.Я попытался переместить этот код в вспомогательный метод, который обязательно вызову в главном потоке, но ничего не происходит.
- (void)refreshMap {
for (MapPerson *p in mapPeople) {
[self.map addAnnotation:p];
}
NSLog(@"Mapview has %i annotations.", self.map.annotations.count);
// is always 1 for the user's location
}
У меня есть Googled и SO, и я посмотрел несколько различных учебных пособий, которые не отличаются отмой код кроме имен.Я поставил точку останова в mapView: viewForAnnotation:, и она вызывается только один раз для аннотации местоположения пользователя.Счетчик mapPeople равен 5. Их координаты установлены правильно.Есть идеи?