Como mostrar uma chamada para o objeto que implementa MkAnnotation protcol ?
Pergunta
Eu tenho um objeto que implementa a MKAnnotation protocolo:
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
@interface VoiceMemoryAnnotation : NSObject <MKAnnotation> {
NSString * blobkey;
}
@property (nonatomic, retain) NSString * blobkey;
-(id)initWithBlobkey:(NSString *) key andCoordinate:(CLLocationCoordinate2D) c;
@end
Adicionar este objeto um mapa funciona perfeitamente desde que eu possa ver o vermelho pinos que estão sendo ignorados.No entanto, o problema surge quando quero definir este objeto para mostrar um texto explicativo.
Eu não posso fazer anotação.showCallOut=SIM, porque um "MkAnnotation" não tem essa propriedade, mas um MkAnnotationView faz.Como posso contornar isso?
Tentei implementar o mapa de retorno de chamada "viewForAnnotation" para verificar "VoiceMemoryAnnotation" e vou tentar voltar com um novo "MkAnnotationView" e defina o respectivo texto explicativo = SIM, mas eu começo a receber uma falha de segmentação quando eu faço isso.
Alguma idéia do que eu"m fazendo de errado?
Solução
Primeiro você precisa criar o seu anotação objeto (aquele que implementa o MKAnnotation protocol) e adicioná-lo ao seu mapa usando algo como
VoiceMemoryAnnotation*VMA = [[VoiceMemoryAnnotation alloc] init];
VMA.title = @"Title String";
VMA.subtitle = @"Subtitle String";
[self.mapView addAnnotation:VMA];
Que automaticamente irá chamar o método a seguir o que você vai precisar para implementar:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
MKPinAnnotationView*singleAnnotationView = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:nil];
singleAnnotationView.canShowCallout = YES;
return singleAnnotationView;
}
Nesta implementação MKAnnotationView não vai funcionar, ele precisa ser MKPinAnnotationView.
Outras dicas
Eu não tenho certeza eu entendo completamente a sua pergunta, mas eu me pergunto, é MKMapViews
's - (void)selectAnnotation:(id <MKAnnotation>)annotation animated:(BOOL)animated
o que você está procurando?