2010-10-22 10 views

Odpowiedz

31

Jeśli konfiguracja Twój obiekt MKAnnotation z metodą setCoordinate prawidłowo, a następnie w metodzie didChangeDragState nowa współrzędnych powinny być już w obiekcie adnotacji:

- (void)mapView:(MKMapView *)mapView 
     annotationView:(MKAnnotationView *)annotationView 
     didChangeDragState:(MKAnnotationViewDragState)newState 
     fromOldState:(MKAnnotationViewDragState)oldState 
{ 
    if (newState == MKAnnotationViewDragStateEnding) 
    { 
     CLLocationCoordinate2D droppedAt = annotationView.annotation.coordinate; 
     NSLog(@"dropped at %f,%f", droppedAt.latitude, droppedAt.longitude); 
    } 
} 

odsyłającym, patrz „Zaznaczanie Adnotacja Wyświetl jako "Przeciąganie" w sekcji docs here. Jeśli Twoja aplikacja musi działać w systemie operacyjnym wcześniej niż w wersji 4.x, przeciąganie wymaga bardziej ręcznej pracy. Link w dokumentach wskazuje również na przykład, jak to zrobić, jeśli trzeba.

+0

podziękowaniem zmienić swój stan przeciągania nie wiedziałem "didChangeDragState", a to było dokładnie to, czego szukałem. –

5

można również dodać następujące:

if (newState == MKAnnotationViewDragStateStarting) { 
    annotationView.dragState = MKAnnotationViewDragStateDragging; 
} 
else if (newState == MKAnnotationViewDragStateEnding || newState == MKAnnotationViewDragStateCanceling) { 
    annotationView.dragState = MKAnnotationViewDragStateNone; 
} 

od MKAnnotationView nie dokładnie (co może uczynić swoją mapę patelnię z adnotacją nawet po przerwaniu przeciągania)