MKMapView — viewForAnnotation не вызывается при загрузке дополнительных результатов

StackOverflow https://stackoverflow.com/questions/2494810

Вопрос

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

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

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

Я считаю, что viewForAnnotations:не вызывается, когда я нажимаю «загрузить еще».Я не уверен, как это вызвать.любой?

-(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
Это было полезно?

Решение 2

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

Другие советы

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

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

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

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

- (void)viewDidLoad
{
    ...

   // map delegate
   [mView setDelegate:self];

   ...

   // add annotation
   [_map addAnnotation:_poiAnnotation];

   ...
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top