MKMapView — viewForAnnotation не вызывается при загрузке дополнительных результатов
-
21-09-2019 - |
Вопрос
Отредактировано, чтобы добавить * Я еще не нашел решения для этой проблемы, может кто-нибудь помочь?Моя проблема похожа на эту, но опубликованный ответ мне не помог - Обновление 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];
...
}