2010-10-22 31 views

回答

31

,如果你已經安裝了setCoordinate方法您MKAnnotation對象正確,那麼在didChangeDragState方法,新座標應該已經在註釋對象:

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

僅供參考,請參閱「標記你在docs here中作爲可拖動的註釋視圖「部分。如果您的應用程序需要在4.x之前的OS中工作,則拖動需要更多手動工作。文檔中的鏈接也指出瞭如果需要的話,如何做到這一點的一個例子。

+0

謝謝改變其拖拽狀態你我不知道「didChangeDragState」,這是我想要的。 – 2010-10-23 10:39:49

5

,你可能還需要增加以下內容:

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

因爲MKAnnotationView不準確(這可能使你的地圖泛用您的註釋,你甚至停止後拖着)