Poi
Poi 개념 및 사용 방법.
KakaoMap에서는 지도상에 특정 위치에 대한 정보를 표현하기 위한 방법으로 Label을 제공합니다.
KakaoMapsSDK에서는 특정 점, 혹은 선에 정보를 표시하기 위해 Poi, LodPoi, WaveText 3가지 타입의 객체를 제공하며, 이들을 통틀어서 Label로 정의합니다.
Poi는 특정 지점의 정보를 표시할 때 사용하며, LodPoi는 특정 지점의 정보를 표시하되, 미리 Lod(Level Of Detail)처리가 들어가서 많은 양의 Poi를 빠르게 표시할 수 있습니다. WaveText는 선형으로 이루어진 정보를 표시할 때 사용합니다.
Poi, LodPoi, WaveText와 같은 Label 종류의 Control은 LabelManager를 통해 이루어집니다. LabelManager는 KakaoMap View 객체 안에 종속되어있으며, KakaoMap이 삭제된 뒤에 사용하지 않도록 주의해야합니다.
LabelManager에서는 Layer, Style, Animator 3가지 타입을 관리하고 있습니다. Layer는 각 개별 객체들을 추가해서 일종의 폴더처럼 관리할 수 있는 하나의 단위입니다. Style은 개별 객체들을 표출할 스타일을 정의합니다. 객체를 생성하기 전에 미리 스타일을 추가해놓고, 해당 스타일의 id를 레퍼런스로 객체를 어떻게 표시할 지 정의할 수 있습니다. Animator는 객체에 줄 수 있는 애니메이션 효과 그룹을 정의합니다.
LabelManager를 통해서 LabelLayer 및 LodLabelLayer를 생성할 수 있습니다. 각 Layer별로 Poi, LodPoi, WaveText를 추가하여 레이어 단위로 관리할 수 있습니다.
Poi와 WaveText는 LabelLayer를 통해서 생성할 수 있습니다. 사용자가 직접 객체를 생성할 수 없으며, LabelManager를 통해서 생성된 LabelLayer에 생성 옵션인 PoiOptions 및 WaveTextOptions 클래스를 이용해서 객체를 추가할 수 있습니다.
LodPoi는 대량의 Poi(ex. 즐겨찾기)를 빠르게 표시할 때 사용합니다. 사용자가 직접 객체를 생성할 수 없으며, LabelManager를 통해서 생성된 LodLabelLayer에 생성 옵션인 PoiOptions을 통해서만 객체를 생성할 수 있습니다. 대량의 Poi를 추가하기 위해서는 LOD로 관리하는 LodLabelLayer에 추가하는것을 권장합니다. LodPoi는 Poi와 다르게 이동/회전 등 LOD처리에 영향을 줄 수 있는 인터페이스가 제한되어 있습니다.
일반 LabelLayer를 사용해서 대량의 Poi를 표시할 경우 느리게 표시될 수 있습니다.
Label은 label이 속한 layer의 zOrder와 competitionType, competitionUnit, orderingType에 따라 표출 우선 순위가 결정됩니다. 레이어의 zOrder값은 아래와 같이 미리 정의된 사용 가능한 범위 내에서 사용해야 합니다. 예약된 범위의 값을 사용하게 되면 의도와 다르게 그려지거나 별도의 공지 없이 렌더링 결과가 달라질 수 있습니다.
zOrder | Description |
---|---|
0~999 | 엔진 예약(내부 기본 POI) |
1000~1999 | 사용 가능 |
2000~2999 | 엔진 예약 |
3000~3999 | 사용 가능 |
4000~4999 | 엔진 예약(주요 시군구 등) |
5000~ | 사용 가능 |
Label을 그릴 때 위치가 겹치는 경우에 아래와 같이 처리합니다.
Poi, LodPoi, WaveText등 모든 객체는 Style을 사용합니다. 객체와 별개로 Style을 생성하여 해당 styleID를 객체가 참조하는 방식으로 Label이 어떻게 표시될 지 정할 수 있습니다. 즉, LabelManager를 통해서 ID를 부여한 style을 생성한 뒤, 객체 생성 시 해당 styleID값을 지정하면 특정 style로 표시됩니다. Poi와 LodPoi는 PoiStyle을 사용하며, WaveText는 WaveTextStyle을 사용합니다. 각 스타일은 모두 레벨별로 표출할 스타일을 지정할 수 있습니다.