MKMapView - viewForAnnotation не вызывается при загрузке дополнительных результатов - PullRequest
3 голосов
/ 22 марта 2010

Отредактировано для добавления * Я пока не нашел решения для этого, кто-нибудь может помочь? Моя проблема похожа на это, но опубликованный ответ не работает для меня - Обновление MKMapView после перемещения булавки * Конец редактирования

У меня есть поиск карты с поддержкой поиска. Когда пользователь нажимает кнопку поиска, мои пользовательские аннотации добавляются в вид карты. Поиск возвращает 20 результатов со ссылкой «загрузить еще». Когда я нажимаю «загрузить больше», к представлению карты необходимо добавить больше аннотаций.

Проблема в том, что аннотации добавляются в вид карты, но не отображаются на карте. Если я увеличиваю или уменьшаю масштаб, чтобы изменить область карты, отображаются контакты.

Я считаю, что viewForAnnotations: не вызывается, когда я нажимаю 'load more'. Я не уверен, как вызвать это. кто-нибудь?

-(void)completedSearch:(NSNotification *)resultNotification
 {
   //begin loop
   //get coordinate
   customAnnotation *annot = [[customAnnotation alloc] initWithCoordinate:coordinate];
   //set title subtitle 
   [annotationsArray addObject:annot];
   //end loop
   [mView addAnnotations:annotationsArray];
   [mView setRegion:region animated:YES];
   [mView regionThatFits:region];
 }

  //custom annotation
  @interface customAnnotation : NSObject <MKAnnotation> 
 { 
   CLLocationCoordinate2D coordinate;  
   NSString*              title; 
   NSString*              info; 
 } 
 @property (nonatomic, retain) NSSting *title;
 @property (nonatomic, retain) NSSting *info;

 -(id) initWithCoordinate:(CLLocationCoordinate2D)c;
 @end

 @implementation customAnnotation
 @synthesize coordinate, title, info;
 -(id) initWithCoordinate:(CLLocationCoordinate2D)c
 {
   coordinate = c;
   return self;
 }
 -(void)dealloc{//dealloc stuff here}
 @end

Ответы [ 3 ]

5 голосов
/ 19 ноября 2010

просто хотел подтвердить я добавлял аннотации из потока - который не работает. как только я это использовал (addCameraIconOnMain добавляет мои аннотации)

[self performSelectorOnMainThread:@selector(addCameraIconOnMain:) withObject:cd waitUntilDone:true];    

это сработало! спасибо!

1 голос
/ 01 апреля 2010

Это как-то связано с промежутком времени, в течение которого вы получаете уведомление, а затем добавляете контакты для аннотаций. Заставил его использовать основной поток для добавления аннотированных штифтов.

0 голосов
/ 10 июля 2013

в моем случае проблема заключалась в том, что я добавлял аннотацию перед делегатом карты. Это должно быть что-то вроде:

- (void)viewDidLoad
{
    ...

   // map delegate
   [mView setDelegate:self];

   ...

   // add annotation
   [_map addAnnotation:_poiAnnotation];

   ...
}
...