MKMAPVIEW - ViewForAnnotation não chamado enquanto carrega mais resultados
-
21-09-2019 - |
Pergunta
Editado para adicionar * Ainda não encontrei uma solução para esta, alguém pode ajudar? Meu problema é semelhante a isso, mas a resposta postada não funciona para mim - MKMAPVIEW Refresh após movimentos do pino *Edição final
Eu tenho uma exibição de mapa ativada por pesquisa. Quando o usuário atinge a pesquisa, minhas anotações personalizadas são adicionadas à visualização do mapa. A pesquisa retorna 20 resultados com um link 'carga mais'. Quando pressiono a carga mais, mais anotações devem ser adicionadas à visualização do mapa.
O problema é: as anotações são adicionadas à visualização do mapa, mas não são exibidas no mapa. Se eu zoom ou zoom para alterar a região do mapa, os pinos serão mostrados.
Acho que o ViewForAnnotações: não está sendo chamado quando atingo 'carregar mais'. Não tenho certeza de como acionar isso. alguém?
-(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
Solução 2
Isso tinha algo a ver com o lapso de tempo recebendo a notificação e depois adicionando os pinos de anotação. Forçando -o a usar o thread principal para adicionar pinos de anotação funcionou.
Outras dicas
Só queria confirmar que eu estava adicionando anotações de um tópico - o que não funciona. Depois que eu usei isso (AddcameraiconMain adiciona minhas angações)
[self performSelectorOnMainThread:@selector(addCameraIconOnMain:) withObject:cd waitUntilDone:true];
Está funcionando! obrigado!
No meu caso, o problema era que eu estava adicionando a anotação antes do delegado do mapa. Deve ser algo como:
- (void)viewDidLoad
{
...
// map delegate
[mView setDelegate:self];
...
// add annotation
[_map addAnnotation:_poiAnnotation];
...
}