사용자 정의 마커(Custom Marker)
GMap.Net에서 사용하는 마커(Marker)
를 재정의하여 활용할 수 있습니다.
마커를 재정의한다면 기존 마커에서 지원되지 않는 기능을 덧붙여 새로운 마커를 생성할 수 있습니다.
클래스 코드
세부 코드
GmapMarkerWithLabel
사용자 정의 마커를 생성하기 위해 GMarkerGoogle
클래스를 상속받아 GmapMarkerWithLabel
로 재정의합니다.
GmapMarkerWithLabel
클래스는 마커(Marker)
와 함께 임의의 텍스트를 마커 하단에 입력합니다.
GmapMarkerWithLabel
클래스에 사용될 마커 이미지(MarkerImage)
, 마커 라벨(MarkerLabel)
, 라벨 폰트(LabelFont)
를 선언합니다.
마커 이미지(MarkerImage)
는 새로 정의될 마커 이미지를 의미합니다.
마커 라벨(MarkerLabel)
, 라벨 폰트(LabelFont)
는 마커 하단에 입력될 라벨의 문자열과 글꼴을 의미합니다.
GmapMarkerWithLabel
는 입력값으로 위도/경도(p)
, 마커 이미지(marker)
, 하단 문자열(catpion)
을 사용합니다.
base
키워드를 통해 부모 클래스의 가르킵니다.
위도/경도(p)
는 부모 클래스에 정의되어 있기 때문에 별도로 변수를 생성하지 않아도 됩니다.
OnRender
OnRender
메서드를 오버라이드(Override)
하여 재정의합니다.
OnRender
메서드는 렌더링될 때 실행되는 메서드입니다.
즉, 렌더링 메서드를 재정의하여 기존에 그려지는 방식과 다른 방식으로 그립니다.
문자열 측정(MeasureString)
메서드로 입력된 라벨의 문자열 크기를 계산합니다.
입력된 문자열의 크기를 계산하는 이유는 그래픽스(Graphics)
를 통해 새로 그리기 때문에 원하는 위치에 글자를 입력하려면 입력되는 글자의 크기를 먼저 계산합니다.
이미지 그리기(DrawImage)
메서드로 기존 마커와 동일한 형태를 그립니다.
문자열 그리기(DrawString)
메서드로 기존에 없던 문자열을 그립니다.
문자열의 위치는 (기존 위치 + 마커 이미지 너비의 절반 - 문자열 너비의 절반, 기존 위치 + 마커의 높이)
입니다.
기존 위치 + 마커 이미지 크기의 절반은 마커의 중심부에 위치하게 되며, 문자열의 크기의 절반을 감산하여 준다면 문자열이 마커의 정중앙에 위치하게 됩니다.
기존 위치 + 마커 이미지 크기는 마커의 끝쪽에 위치하게 됩니다.
Map
기존 마커의 추가 방식과 동일한 방식으로 등록합니다.
단, 마커 이미지를 새로 정의하여 입력하고 임의의 문자열을 추가합니다.
마커 이미지는 33 × 50
크기를 가지며, Caption
문자열을 마커 하단에 그리게 됩니다.
출력 결과
댓글 남기기