2013-10-31 4 views
0

많은 주석이있는 MKMapView는 적절한 순서로 있습니다. 그리고 버튼을지도 모드를 변경할 수 있습니다주석이있는 MKMapView

- (IBAction)userDidPressTrackButton:(id)sender { 
    if (self.mapView.userTrackingMode == MKUserTrackingModeFollow) { 
     self.mapView.userTrackingMode = MKUserTrackingModeFollowWithHeading; 
     return; 
    } 

    if (self.mapView.userTrackingMode == MKUserTrackingModeFollowWithHeading) { 
     self.mapView.userTrackingMode = MKUserTrackingModeNone; 
     return; 
    } 

    if (self.mapView.userTrackingMode == MKUserTrackingModeNone) { 
     self.mapView.userTrackingMode = MKUserTrackingModeFollow; 
    } 
} 

모드는 = MKUserTrackingModeFollowWithHeading 주석 임의의 순서로 나가기 시작했습니다 시작할 때. 이 모드에서는 mapview가 매 초마다 다시 그리기 시작하고 모든 하위 뷰 (주석)를 알 수없는 순서로 시작하는 것으로 보입니다.

주석의 순서 변경을 취소하는 방법은 무엇입니까?

답변

0

mapview.annotations에서 되돌아 오는 주석 배열은 추가 한 순서와 다를 수 있습니다. 특별한 순서로 정맥에 의존하는 경우 아마도 viewForAnnotations 함수가 잘못되었을 수 있습니다. 매개 변수로 annotation이 주어지면이를 사용하여 그릴 뷰를 결정합니다. 일반적으로 사람들은 MKAnnotation 프로토콜을 구현하는 사용자 정의 클래스를 만들고 올바른 뷰를 만드는 데 필요한 데이터를 저장하는 몇 가지 추가 변수를 가지고 있습니다. viewForAnnotations이 호출되면 제공된 주석이 해당 특수 클래스 중 하나인지 확인하고 데이터가 추출되면보기를 만들어 반환합니다. 주석 배열의 순서를 알 필요가 없으며, MKMapView가 좋아하는 순서로 주석을 요구할 수 있기 때문에 아무런 도움이되지 않습니다.

사이드 노트 : 왜 추적 모드를 전환하기 위해 자신의 기능을 작성하고 있습니까? 당신은 단지 use the official one 일 수 있으며 그것은 당신을 위해 그것을 모두 할 것입니다.

+0

실제로이 답변은 도움이되지 못했지만 어쨌든 나는 다른 답변을 찾지 못했습니다. 나는 artfissially 앞에 subview를 넣었다. –

+0

지도 뷰를 또 다른 서브 뷰에 놓으면'viewForAnnotation'의 올바른 버전을 쓰는 것을 피하기 위해 GPS 표제와 일치하도록 맵을 회전 시키면 틀리게 수행됩니다. 주석은 항상 알려지지 않은 순서로있을 것으로 예상됩니다. 당신은 특정 순서의 n 번째가 아니라 요구하는 것을 그려야합니다. – Craig