2009-09-22 11 views
7

Moje piny z mapami mogą być dość gęsto zaludnione, więc po wybraniu pinezki pojawia się objaśnienie, ale jest ono w większości zasłonięte przez wszystkie pozostałe szpilki mapy - mogę przyprowadzić pinezkę mapy z przodu był delegat dla wybranej pinezki mapy (niewykorzystane objaśnienie, wybrana pinezka).MKAnnotacja - Mapa Objaśnienie pinezki pojawia się za innymi pinami mapy

Jakieś sugestie dotyczące pracy?

Odpowiedz

1

UICallout view to widok z podglądu MKAnnotationView. Myślę więc, że jeśli przyniesiesz Map ping z przodu, UICAlloutView też tam będzie.

+0

jak można doprowadzić UICalloutView do przodu programowo? – si28719e

2

Jeśli używasz niestandardowych widoków adnotacji, możesz dodać obserwatora dla wybranej właściwości, który będzie działał jak delegat, gdy zostanie wybrany pinezka.

- (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; 
} 

następnie można monitorować stan wybrany z

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

Odpowiedź połączoną Mugunth Kumar również daje pożądane rezultaty tylko że pan wspomniał delegat jak funkcjonalność w swoim pytaniu.

EDIT:

Oto przykład z zawartością observeValueForKeyPath: ofObject: Zmiana: Kontekst: metoda

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

Czy mógłbyś to rozwinąć? Jak wyglądałaby implementacja observeValueForKeyPath? czy możesz dać przykład? – si28719e

+0

edytował odpowiedź, aby dodać przykładową implementację, mam nadzieję, że pomoże! – acqu13sce