CLOSE SEARCH

Map on iOS – MKUserLocation, MKAnnotationView, MKAnnotation Protocol

MKUserLocation
현재 위치 정보를 나타내는 클래스로 인스턴스를 직접 생성하면 안되고, MKMapView의 userLocation 속성을 통해 접근해야 한다.


MKAnnotationView

  • Annotation을 지도에 표시하기위해 사용되는 뷰 객체로 표시되는 Annotation은 MKAnnotation 프로토콜을 따르는 객체여야 한다.
  • AnnotationView는 지도에 실제로 표시되는 시점에 mapView:viewForAnnotation: 델리게이트 메소드를 통해서 지도에 제공된다.
  • image 속성을 설정해서 지도에 제공하는 것이 가장 효과적인 방법이다. AnnotationView는 image 크기에 맞게 자동으로 변경된다.
  • drawRect: 메소드를 오버라이드 하는 경우 image 속성을 통해 이미지를 설정할 수 없고, frame 속성을 이용해 뷰의 크기를 지정해주어야 한다.
  • 맵의 줌 스케일과 상관없이 항상 같은 크기를 가진다.
  • 선택 상태를 지정할 수 있다.
  • 서브클래스에서 초기화 메소드를 추가한 경우 initWithAnnotation:reuseIdentifier: 메소드를 통해 슈퍼클래스를 초기화해야 한다.
  • leftCalloutAccessoryView를 통해서 callout 뷰를 특정 뷰로 대체할 수 있다.
  • iOS 4.0 이상에서 드래그 기능을 지원하고자 하는 경우 dragState를 변경하는 코드를 추가해 주어야한다.


MKPinAnnotationView
MKAnnotation 클래스를 상속받는 클래스로 지도에 핀 모양의 Annotation을 추가할때 사용한다.


MKAnnotation Protocol
Annotation 정보를 담는 객체가 공통적으로 구현해야할 프로토콜이다. coordinate 속성은 반드시 구현해야 한다.

  • coordinate : CLLocationCoordinate2D 형식의 가운데 좌표
  • setCoordinate: – 가운데 좌표를 설정하는 메소드
  • title – NSString* 형식의 타이틀 문자열을 리턴하는 메소드
  • subtitle – NSString* 형식의 서브타이틀 문자열을 리턴하는 메소드
  • MKAnnotation 프로토콜을 따르는 객체 구현 예제



크리에이티브 커먼즈 라이선스
이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용할 수 있습니다.

Filed under: iOS