좌표 객체
좌표는 카메라나 오버레이의 위치같은 지리적 정보를 표현하기 위한 최소 단위로, 지도를 구성하는 가장 기본적인 요소입니다. 지도와 관련된 많은 API는 좌표 또는 영역을 파라미터로 받거나 반환합니다.
좌표
네이버 지도 SDK는 지구 표면의 한 지점을 위도와 경도로 표현하는 지리 좌표계를 기본 좌표계로 사용하며, 이와 관련된 기능을 제공합니다. 또한 기본 좌표계로 변환할 수 있는 몇 가지 다른 좌표계도 제공합니다.
LatLng
LatLng
는 하나의 위경도 좌표를 나타내는 클래스입니다. latitude
속성이 위도를, longitude
속성이 경도를 나타냅니다. LatLng
의 모든 속성은 final
이므로 각 속성은 생성자로만 지정할 수 있고, 한 번 생성된 객체의 속성은 변경할 수 없습니다.
다음은 LatLng
객체를 생성하고 토스트로 위도와 경도를 출력하는 예제입니다.
LatLng coord = new LatLng(37.5670135, 126.9783740);
Toast.makeText(context,
"위도: " + coord.latitude + ", 경도: " + coord.longitude,
Toast.LENGTH_SHORT).show();
Java
LatLng coord = new LatLng(37.5670135, 126.9783740);
Toast.makeText(context,
"위도: " + coord.latitude + ", 경도: " + coord.longitude,
Toast.LENGTH_SHORT).show();
Kotlin
val coord = LatLng(37.5670135, 126.9783740)
Toast.makeText(context,
"위도: ${coord.latitude}, 경도: ${coord.longitude}",
Toast.LENGTH_SHORT).show()
다른 좌표계
네이버 지도 SDK는 LatLng
외에도 몇 가지 자주 사용되는 좌표계를 제공합니다. 지원하는 좌표계는 다음과 같습니다.
WebMercatorCoord
: 웹 메르카토르 좌표계의 좌표를 의미합니다.Utmk
: UTM-K 좌표계의 좌표를 의미합니다.Tm128
: TM-128 좌표계의 좌표를 의미합니다.
각 클래스의 toLatLng()
메서드를 사용해 다른 좌표를 위경도 좌표로 변환하거나, valueOf()
스태틱 메서드를 사용해 위경도 좌표를 해당하는 좌표로 변환할 수 있습니다.
다음은 Utmk
를 LatLng
로 변환하는 예제입니다.
Utmk utmk = new Utmk(953935.5, 1952044.1);
LatLng latLng = utmk.toLatLng();
Java
Utmk utmk = new Utmk(953935.5, 1952044.1);
LatLng latLng = utmk.toLatLng();
Kotlin
val utmk = Utmk(953935.5, 1952044.1)
val latLng = utmk.toLatLng()
다음은 LatLng
를 Utmk
로 변환하는 예제입니다.
LatLng latLng = new LatLng(37.5666103, 126.9783882);
Utmk utmk = Utmk.valueOf(latLng);
Java
LatLng latLng = new LatLng(37.5666103, 126.9783882);
Utmk utmk = Utmk.valueOf(latLng);
Kotlin
val latLng = LatLng(37.5666103, 126.9783882)
val utmk = Utmk.valueOf(latLng)
MBR
각각 남서쪽과 북동쪽 꼭지점을 의미하는 두 개의 좌표가 주어진다면 직사각형 형태의 영역을 만들 수 있습니다. 이를 최소 경계 사각형 또는 MBR(Minimum Bounding Rectangle)이라고 부릅니다. MBR은 하나의 영역을 나타내는 가장 간단한 방법이므로 영역을 다루는 API에서 자주 사용됩니다.
LatLngBounds
LatLngBounds
는 위경도 좌표로 이루어진 하나의 MBR을 나타내는 클래스입니다. southWest
속성이 남서쪽 좌표를, northEast
속성이 북동쪽 좌표를 나타냅니다. LatLngBounds
의 모든 속성은 final
이므로 각 속성은 생성자로만 지정할 수 있고, 한 번 생성된 객체의 속성은 변경할 수 없습니다.
다음은 LatLngBounds
객체를 생성하는 예제입니다.
LatLng southWest = new LatLng(31.43, 122.37);
LatLng northEast = new LatLng(44.35, 132);
LatLngBounds bounds = new LatLngBounds(southWest, northEast);
Java
LatLng southWest = new LatLng(31.43, 122.37);
LatLng northEast = new LatLng(44.35, 132);
LatLngBounds bounds = new LatLngBounds(southWest, northEast);
Kotlin
val southWest = LatLng(31.43, 122.37)
val northEast = LatLng(44.35, 132.0)
val bounds = LatLngBounds(southWest, northEast)
빌더
LatLngBounds.Builder
를 사용하면 여러 좌표를 포함하는 MBR을 만들 수 있습니다. 빌더 객체를 생성하고 include()
메서드를 호출해 영역에 포함시킬 좌표를 지정한 후 build()
메서드를 호출하면 include()
로 지정된 좌표들을 모두 포함하는 영역에 대한 LatLngBounds
객체가 만들어집니다.
다음은 LatLngBounds.Builder
를 이용해 LatLngBounds
객체를 생성하는 예제입니다.
LatLngBounds bounds = new LatLngBounds.Builder()
.include(new LatLng(37.5640984, 126.9712268))
.include(new LatLng(37.5651279, 126.9767904))
.include(new LatLng(37.5625365, 126.9832241))
.include(new LatLng(37.5585305, 126.9809297))
.include(new LatLng(37.5590777, 126.974617))
.build();
Java
LatLngBounds bounds = new LatLngBounds.Builder()
.include(new LatLng(37.5640984, 126.9712268))
.include(new LatLng(37.5651279, 126.9767904))
.include(new LatLng(37.5625365, 126.9832241))
.include(new LatLng(37.5585305, 126.9809297))
.include(new LatLng(37.5590777, 126.974617))
.build();
Kotlin
val bounds = LatLngBounds.Builder()
.include(LatLng(37.5640984, 126.9712268))
.include(LatLng(37.5651279, 126.9767904))
.include(LatLng(37.5625365, 126.9832241))
.include(LatLng(37.5585305, 126.9809297))
.include(LatLng(37.5590777, 126.974617))
.build()