2009-09-22 18 views
7

I miei pin mappa possono essere abbastanza densamente popolati in modo che quando viene selezionato un pin viene visualizzato il richiamo ma è per lo più oscurato da tutti gli altri pin della mappa - Posso portare il Pin mappa in primo piano c'era un delegato per il pin della mappa selezionato (callout non toccato, pin selezionato).MKAnnotation - Map Pin callout si apre dietro altri pin della mappa

Qualche suggerimento per un lavoro in giro?

risposta

1

UICallout view è la sottoview di MKAnnotationView. Quindi, penso che se porterai il ping della mappa in primo piano, ci sarà anche UICAlloutView.

+0

come si fa a portare l'UICalloutView verso la parte anteriore di programmazione? – si28719e

2

Se si utilizzano viste annotazioni personalizzate, è possibile aggiungere un osservatore per la proprietà selezionata che si comporta come un delegato per quando viene selezionato il pin.

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{ 
    MKAnnotation *annview = ...code to either dequeue or create new object... 
    [annview addObserver:self forKeyPath:@"selected" options:NSKeyValueObservingOptionNew context:@"selectedmapannotation"];    
    return annview; 
} 

allora è possibile monitorare lo stato selezionato con

- (void)observeValueForKeyPath:(NSString *)keyPath 
        ofObject:(id)object 
        change:(NSDictionary *)change 
        context:(void *)context; 

La risposta legati da Mugunth Kumar vi darà anche i risultati desiderati è solo che hai fatto menzione di delegato come funzionalità nella sua interrogazione.

EDIT:

Ecco un esempio del contenuto del observeValueForKeyPath: ofObject: cambiamento: Contesto: metodo

NSString *action = (NSString*)context; 

if([action isEqualToString:@"selectedmapannotation"]){ 
    BOOL annotationAppeared = [[change valueForKey:@"new"] boolValue]; 
    MKAnnotationView *ann = (MKAnnotationView *)object; 

    if (annotationAppeared) { 
     // do something with the annotation when it is selected 
    } 
    else { 
     // do something with the annotation when it is de-selected 
    } 
} 
+0

potresti approfondire questo? come sarebbe l'implementazione observValueForKeyPath? Puoi fare un esempio? – si28719e

+0

modificato la risposta per aggiungere un'implementazione di esempio, speriamo che aiuti! – acqu13sce

Problemi correlati