2009-09-22 13 views
7

Los pines de mi mapa pueden estar bastante densamente poblados, de modo que cuando se selecciona un pin, la llamada aparece pero está oscurecida por todos los otros pines del mapa. Puedo traer el Pin de mapa al frente, había un delegado para el pin del mapa seleccionado (no el rótulo golpeado, el pin seleccionado).MKAnnotation - Map Pinout aparece detrás de otros pines de mapa

¿Alguna sugerencia para un trabajo?

Respuesta

1

UICallout view es la subvista de MKAnnotationView. Entonces, creo que si traes Map ping al frente, UICAlloutView estará allí también.

+0

¿cómo lograr que el UICalloutView a la parte delantera mediante programación? – si28719e

2

Si está utilizando vistas de anotación personalizadas, puede agregar un observador para la propiedad seleccionada que actuaría como un delegado para cuando se selecciona el 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; 
} 

entonces usted puede monitorear el estado seleccionado con

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

La respuesta unidos por Mugunth Kumar también le dará los resultados deseados es sólo que usted hizo mención del delegado como la funcionalidad en su pregunta.

EDIT:

Aquí es un ejemplo de los contenidos de la observeValueForKeyPath: ofObject: el cambio: Contexto: método

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

¿Podrías dar más detalles sobre esto? ¿Cómo sería la implementación de observeValueForKeyPath en realidad? ¿Puede dar un ejemplo? – si28719e

+0

editó la respuesta para agregar una implementación de ejemplo, ¡espero que ayude! – acqu13sce

Cuestiones relacionadas