//////
Search

Naver Map 속성 및 정보

지도와 좌표

지도 객체

MapFragment 객체 사용해서 지도 뷰 가져오기
NaverMap 객체 사용해서 사용할 지도 꾸미기

좌표 객체

LatLng 클래스 사용해서 위 경도 가져와 지도에 뿌리기

지도 옵션

지도 타입

일반 지도 타입(하천, 녹지, 도로, 심벌 등) Basic
위성 지도 타입(심벌 도로 등 위성 사진을 제외한 요소는 노출하지 않음) Satellite
하이브리드 타입(위성 사진과 도로, 심벌과 함께 노출하는 하이브리드 지도 타입) Hybrid
Terrain 타입( 지형도를 나타내며 산악 지형을 실제 지형과 유사하게 입체적으로 표현하는 타입) Terrain

레이어 그룹

건물 그룹(건물 형상, 주소 심벌 등 관련된 요소 노출) LAYER_GROUP_BUILDING
대중교통 그룹(철도, 지하철 노선, 버스 정류장 등 대중교통과 관련된 요소 노출) LAYER_GROUP_TRANSIT

실내지도 isIndoorEnabled

실내지도가 활성화되면 줌을 어느 정도 활성화하면 자동으로 해당 영역에 대한 실내지도가 나타난다. 단, 지도 유형이 실내지도를 지원하지 않으면 아무런 변화가 일어나지 않는다.

사용자 인터페이스 (UI 설정)

컨트롤

축적 바 (지도의 축적을 표현)
줌 버튼 (클릭하면 지도의 줌 레벨을 1씩 증가 또는 감소)

오버레이

오버레이는 지리적 정보를 시각적으로 나타내는 요소로, 개발자가 지도 위에 자유롭게 배치할 수 있다.

마커

마커는 지도상의 한 지점을 나타내기 위한 오버레이의 한 종류로, 지도에서 가장 널리 사용되는 요소이다.
마커를 사용하면 특정 지도상 좌표에 아이콘과 캡션을 표시할 수 있다. 마커의 아이콘과 캡션은 지도와 함께 움직이지만 지도를 확대 또-는 축소하더라도 일정한 형태를 유지한다.
또한 마커는 클릭 이벤트를 받을 수 있으며 이벤트를 소비하거나 지도로 전파할 수도 있다.
하나의 오버레이는 동시에 두 개 이상의 지도에 나타낼 수 없다. 이미 지도에 나타나있는 오버레이에 새롭게 map 속성을 지정하면 오버레이는 기존의 지도에서 사라지고 새로운 지도에 나타난다.
메인 스레드에서 마커를 한번에 추가하기 위해서 추가할 위치 정보(위 경도)가 필요한데 이건 저장된 사진 정보에서 한번에 가져오는 것인가 아니면 API를 호출해서 정보를 받아오는 것인가?
오버레이를 생성할 때 주의사항이 있다. 오버레이 속성은 안전성이 보장되지 않으므로 여러 스레드에서 동시에 접근해서는 안된다. 특히 지도에 추가된 오버레이 속성은 메인 스레드에서만 접근해야 하며, 그렇지 않을 경우 CalledFromWrongThreadException 예외가 발생한다. 단, 오버레이가 지도에 추가되지 않았다면 다른 스레드에서 오버레이의 속성에 접근해도 예외가 발생하지 않는다.
따라서 대량의 오버레이(ex: Marker)를 다룰 경우 객체를 생성하고 초기 옵션을 지정하는 작업은 백그라운드 스레드에서 수행하고 지도에 추가하는 작업만을 메인 스레드에서 수행하면 메인 스레드를 효율적으로 사용할 수 있다.

이미지

icon 속성을 사용해서 아이콘을 지정할 수 있다.

덧입힐 색상

iconTintColor 속성을 지정하면 아이콘 이미지에 색상을 덧입힐 수 있다. 색상을 덧입하면 덧입 할 색상이 아이콘 이미지의 색상과 가산 혼합된다.

크기

widthheight 속성을 지정해 아이콘의 크기를 변경할 수 있다.

앵커

anchor 속성을 지정하면 이미지가 가리키는 지점과 마커가 위치한 지점을 일치시킬 수 있다. 앵커는 아이콘 이미지에서 기준이 되는 지점을 의미하는 값으로, 아이콘에서 앵커로 지정된 지점이 마커의 좌표에 위치하게 된다.

회전

angle 속성을 지정하면 아이콘을 회전시킬 수 있다. 각도는 화면의 위쪽 방향을 기준으로 시계 방향으로 커진다. 즉, 0도일 경우 화면의 위쪽, 90도일 경우 오른쪽, 180도일 경우 아래쪽을 향하게 된다.

플랫

마커는 기본적으로 사용자가 지도를 기울이거나 회전하더라도 모양을 유지한다.
지도의 기울기나 회전에 따라 마커의 모양을 바꾸려면 isFlat 속성을 사용하면 된다.

캡션

캡션은 마커 이미지와 함께 노출되는 텍스트이다. 마커가 가리키는 지점에 대한 정보를 텍스트로 표현하고자 할 때 사용된다.
텍스트
captionText 속성을 이용해 캡션으로 표시할 텍스트를 지정할 수 있다.
방향
캡션은 기본적으로 아이콘의 아래쪽에 배치되나, captionAligns 속성을 이용해 배치되는 방향을 변경할 수 있다. 위, 아래, 왼쪽, 오른쪽, 각 대각선, 중앙 등 Align 열거형에 정의된 9곳에 배치할 수 있다.
색상
captionColor 속성으로 캡션의 색상을, captionHaloColor 속성으로 캡션의 외곽 색상을 지정할 수 있다.
크기
captionTextSize 속성을 이용하면 캡션의 텍스트 크기를 지정할 수 있다.
최소 및 최대 줌 레벨
captionMinZoomcaptionMaxZoom 속성을 이용하면 특정 줌 레벨에서만 캡션이 나타나도록 지정할 수 있다. 카메라의 줌 레벨이 captionMinZoom , captionMaxZoom 범위를 벗어나면 캡션이 숨겨지고 아이콘만 나타난다.

클러스터링

클러스터링은 데이터 포인트의 그룹화와 관련된 머신러닝 기술이다. 데이터 포인트 집합이 주어지면 클러스터링 알고리즘을 사용하여 각 데이터 포인트를 특정 그룹으로 분류할 수 있다.
구글 지도에서는 Clustering Utility 를 통해 클러스터링을 지원하나, 네이버 지도에서는 클러스터링 기능이 지원되지 않는다. 직접 클러스터링 알고리즘을 만들기엔 비용이 많이 들기 때문에 Ted Park란 분의 TedNaverMapClustering 라이브러리를 사용한다.