2014-02-27 6 views
1

현재지도에서 핀을 수동으로 수정할 수있는 기능을 구현 중입니다. annotationView를 annotationView.draggable = YES;으로 설정했고 새 좌표를 받기위한 델리게이트 메소드도 구현했습니다. 하지만 이제는지도보기에서 어떻게 드래그 동작이 멈추고지도가 이동 된 경우에도 핀이지도에서 고정 된 위치를 얻는다 고 말할 수 있습니다.지도에서 고정 위치가 고정되어 있지 않음

현재 동작은 핀을 새 위치로 드래그 한 후지도를 움직이면 핀이 고정 된 위치를 장치 화면에만 표시하고지도에는 표시되지 않습니다.

도움 주셔서 감사합니다 :).

대표 :

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

annotationView.draggable = NO; if 문 안쪽에서 – user2277872

+0

아니요 도움을받지 못했습니다 :/ –

+0

어노테이션 좌표를 어떻게 업데이트합니까? 제공 한 코드에서 새 좌표를 사용하지 마십시오. –

답변

4

UPDATE :

확인, 그것은 고정 :

이제
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)annotationView didChangeDragState:(MKAnnotationViewDragState)newState fromOldState:(MKAnnotationViewDragState)oldState 
{ 
    if (newState == MKAnnotationViewDragStateStarting) 
    { 
     annotationView.dragState = MKAnnotationViewDragStateDragging; 
    } 
    else if (newState == MKAnnotationViewDragStateEnding || newState == MKAnnotationViewDragStateCanceling) 
    { 
     annotationView.dragState = MKAnnotationViewDragStateNone; 
    } 
} 

난 그냥 새로운 좌표를 유지해야하고 내가 잘 오전 ... - 어쩌면 내가 것 다음 국가의 맞춤 애니메이션을 추가하십시오.

끌기 상태가 MKAnnotationViewDragStateStarting으로 바뀌면 상태를 MKAnnotationViewDragStateDragging으로 설정하십시오. 드래그 시작을 나타내는 애니메이션을 수행하고 애니메이션 된 매개 변수가 YES 인 경우 상태를 변경하기 전에 해당 애니메이션을 수행하십시오. MKAnnotationViewDragStateCanceling 또는 MKAnnotationViewDragStateEnding 하나의 상태 변화는, MKAnnotationViewDragStateNone 상태로 설정

. 드래그가 끝난 의 애니메이션을 실행하고 애니메이션 매개 변수가 YES 인 경우 상태를 변경하기 전에 애니메이션을 수행해야합니다.

+0

+1 명확히하기 위해, MKPinAnnotationView를 사용하지 않을 때 iOS 7에 고유 한 동작처럼 보입니다. 핀 주석보기 또는 이전 버전의 iOS의 경우에는 이것이 필요하지 않은 것으로 보입니다. 그러나 이것은 좋은 발견입니다. – Rob