Label

KakaoMap의 Label.

KakaoMap에서는 지도상에 특정 위치에 대한 정보를 표현하기 위한 방법으로 Label을 제공합니다.

Label

KakaoMapsSDK에서는 특정 점, 혹은 선에 정보를 표시하기 위해 Poi, LodPoi, WaveText 3가지 타입의 객체를 제공하며, 이들을 통틀어서 Label로 정의합니다.

Poi는 특정 지점의 정보를 표시할 때 사용하며, LodPoi는 특정 지점의 정보를 표시하되, 미리 Lod(Level Of Detail)처리가 들어가서 많은 양의 Poi를 빠르게 표시할 수 있습니다. WaveText는 선형으로 이루어진 정보를 표시할 때 사용합니다.

LabelManager


Poi, LodPoi, WaveText와 같은 Label 종류의 Control은 LabelManager를 통해 이루어집니다. LabelManager는 KakaoMap View 객체 안에 종속되어있으며, KakaoMap이 삭제된 뒤에 사용하지 않도록 주의해야합니다.

LabelManager

LabelManager에서는 Layer, Style, Animator 3가지 타입을 관리하고 있습니다. Layer는 각 개별 객체들을 추가해서 일종의 폴더처럼 관리할 수 있는 하나의 단위입니다. Style은 개별 객체들을 표출할 스타일을 정의합니다. 객체를 생성하기 전에 미리 스타일을 추가해놓고, 해당 스타일의 id를 레퍼런스로 객체를 어떻게 표시할 지 정의할 수 있습니다. Animator는 객체에 줄 수 있는 애니메이션 효과 그룹을 정의합니다.

LabelLayer, LodLabelLayer


LabelManager를 통해서 LabelLayer 및 LodLabelLayer를 생성할 수 있습니다. 각 Layer별로 Poi, LodPoi, WaveText를 추가하여 레이어 단위로 관리할 수 있습니다.

LabelManager

Poi와 WaveText는 LabelLayer를 통해서 생성할 수 있습니다. 사용자가 직접 객체를 생성할 수 없으며, LabelManager를 통해서 생성된 LabelLayer에 생성 옵션인 PoiOptions 및 WaveTextOptions 클래스를 이용해서 객체를 추가할 수 있습니다.

LodPoi는 대량의 Poi(ex. 즐겨찾기)를 빠르게 표시할 때 사용합니다. 사용자가 직접 객체를 생성할 수 없으며, LabelManager를 통해서 생성된 LodLabelLayer에 생성 옵션인 PoiOptions을 통해서만 객체를 생성할 수 있습니다. 대량의 Poi를 추가하기 위해서는 LOD로 관리하는 LodLabelLayer에 추가하는것을 권장합니다. LodPoi는 Poi와 다르게 이동/회전 등 LOD처리에 영향을 줄 수 있는 인터페이스가 제한되어 있습니다.

일반 LabelLayer를 사용해서 대량의 Poi를 표시할 경우 느리게 표시될 수 있습니다.

Layer zOrder와 label의 표출 우선 순위

Label은 label이 속한 layer의 zOrder와 competitionType, competitionUnit, orderingType에 따라 표출 우선 순위가 결정됩니다. 레이어의 zOrder값은 아래와 같이 미리 정의된 사용 가능한 범위 내에서 사용해야 합니다. 예약된 범위의 값을 사용하게 되면 의도와 다르게 그려지거나 별도의 공지 없이 렌더링 결과가 달라질 수 있습니다.

zOrder Description
0~999 엔진 예약(내부 기본 POI)
1000~1999 사용 가능
2000~2999 엔진 예약
3000~3999 사용 가능
4000~4999 엔진 예약(주요 시군구 등)
5000~ 사용 가능

Label을 그릴 때 위치가 겹치는 경우에 아래와 같이 처리합니다.

  • zOrder의 값이 클수록 일반적으로 위에 그려집니다(우선 순위가 높음).
  • CompetitionType이 none 혹은 background인 경우 다른 라벨과 겹치더라도 관계없이 그려집니다. (위 아래 겹치는 순서는 zOrder 순서에 따름.)
  • CompetitionType의 upper속성을 가지는 label은 자신이 속한 layer보다 zOrder가 높은 layer에 속한 label 중에 lower속성을 가지는 label과 겹칠 경우 그려지지 않습니다.
  • CompetitionType의 same속성을 가지는 label끼리는 겹칠 경우 orderType에 따라 우선 순위가 높은 label이 그려집니다.

Style


Poi, LodPoi, WaveText등 모든 객체는 Style을 사용합니다. 객체와 별개로 Style을 생성하여 해당 styleID를 객체가 참조하는 방식으로 Label이 어떻게 표시될 지 정할 수 있습니다. 즉, LabelManager를 통해서 ID를 부여한 style을 생성한 뒤, 객체 생성 시 해당 styleID값을 지정하면 특정 style로 표시됩니다. Poi와 LodPoi는 PoiStyle을 사용하며, WaveText는 WaveTextStyle을 사용합니다. 각 스타일은 모두 레벨별로 표출할 스타일을 지정할 수 있습니다.


Poi

Poi 개념 및 사용 방법.

LodPoi

LodPoi 개념 및 사용 방법.

WaveText

WaveText 개념 및 사용 방법.