모든 준비를 마쳤습니다!

개발을 시작하려면 개발자 문서로 이동하세요.

Google Maps Android API 활성화

개발을 시작하기 위해 Google Developers Console에서 우선적으로 해야 할 일을 몇 가지 소개하겠습니다.

  1. 프로젝트 생성 또는 선택
  2. Google Maps Android API 활성화
  3. 적합한 키 생성
계속

그라운드 오버레이

그라운드 오버레이는 위도/경도 좌표에 연동된 이미지 오버레이이므로, 지도를 드래그하거나 확대/축소하면 함께 움직입니다.

코드 샘플

Github의 ApiDemos 리포지토리에는 그라운드 오버레이를 보여주는 샘플이 포함되어 있습니다.

소개

그라운드 오버레이는 지도에 고정된 이미지입니다. [마커]와 달리 그라운드 오버레이는 화면이 아니라 지표면과 반대쪽 방향이므로, 지도를 회전, 틸트 또는 확대/축소하면 이미지의 방향이 바뀝니다. 그라운드 오버레이는 지도의 한 영역에 단일 이미지를 고정하려는 경우에 유용합니다. 지도의 많은 부분을 덮는 큰 이미지를 추가하려면, 타일 오버레이를 사용하는 것이 좋습니다.

오버레이 추가

GroundOverlay를 추가하려면 이미지와 위치를 정의하는 GroundOverlayOptions 객체를 생성합니다. 지도에서 이미지의 위치에 영향을 주는 추가 설정을 선택적으로 지정할 수 있습니다. 필요한 옵션을 정의한 뒤에 GoogleMap.addGroundOverlay() 메서드에 객체를 전달하고 지도에 이미지를 추가합니다. addGroundOverlay() 메서드는 GroundOverlay 객체를 반환합니다. 나중에 수정하려면 이 객체에 대한 참조를 유지해야 합니다.

참고: 지도에 이미지를 추가하면 각 변이 2의 거듭제곱인 이미지로 변환됩니다. 치수가 2의 거듭제곱인 원본 이미지를 사용하면 이러한 변환을 방지할 수 있습니다(예: 128x512 또는 1024x1024).

단계별:

  1. GroundOverlayOptions 객체를 인스턴스화합니다.
  2. 이미지를 BitmapDescriptor로 지정합니다.
  3. 이용 가능한 메서드 중 하나를 사용하여 이미지의 위치를 설정합니다.
    • position(LatLng location, float width, float height)
    • position(LatLng location, float width)
    • positionFromBounds(LatLngBounds bounds)
  4. 필요한 경우 transparency와 같은 선택적 특성을 설정합니다.
  5. GoogleMap.addGroundOverlay()를 호출하여 지도에 이미지를 추가합니다.

아래 예시는 기존 GoogleMap 객체에 그라운드 오버레이를 추가하는 방법을 보여줍니다.

LatLng NEWARK = new LatLng(40.714086, -74.228697);

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .position(NEWARK, 8600f, 6500f);
map.addGroundOverlay(newarkMap);

지도에 그라운드 오버레이를 추가한 다음 변경하거나 제거하려면 GroundOverlay 객체를 보유하고 있어야 합니다. 나중에 이 객체를 변경하여 오버레이를 수정할 수 있습니다.

LatLng NEWARK = new LatLng(40.714086, -74.228697);

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .position(NEWARK, 8600f, 6500f);

// Add an overlay to the map, retaining a handle to the GroundOverlay object.
GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);

오버레이 제거

GroundOverlay.remove() 메서드로 그라운드 오버레이를 제거할 수 있습니다.

imageOverlay.remove();

오버레이 변경

GroundOverlay.setImage(BitmapDescriptor) 메서드로 그라운드 오버레이 이미지를 지도에 추가한 후에 해당 이미지를 변경할 수 있습니다.

// Add an overlay, retaining a handle to the GroundOverlay object.
GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);

// Update the GroundOverlay with a new image of the same dimensions.
imageOverlay = map.setImage(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1975));

setImage() 메서드는 기존 이미지를 동일한 치수의 다른 이미지로 교체합니다.

그라운드 오버레이 위치 지정

그라운드 오버레이의 위치를 지정하는 두 가지 방법이 있습니다.

  • LatLng를 사용하여 오버레이를 중앙에 배치하고, 미터 단위 치수로 이미지 크기를 지정합니다.
  • LatLngBounds를 사용하여 이미지의 북동쪽과 남서쪽 모서리를 지정합니다.

그라운드 오버레이를 지도에 추가하기 전에 위치를 지정해야 합니다.

위치를 사용하여 이미지 위치 지정

이미지를 추가할 때 앵커가 고정되는 LatLng와 오버레이의 너비(미터 단위)를 지정합니다. anchor는 기본값은 이미지의 중앙입니다. 선택적으로 오버레이의 높이를 제공할 수 있습니다(미터 단위). 오버레이의 높이를 제공하지 않으면 이미지의 비율을 유지하도록 자동으로 계산됩니다.

아래 코드는 40.714086, -74.228697 위치에 이미지를 배치합니다(너비 8.6km, 높이 6.5km). 이미지는 왼쪽 하단에 고정됩니다.

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .anchor(0, 1)
        .position(new LatLng(40.714086, -74.228697), 8600f, 6500f);

LatLngBounds를 사용하여 이미지 위치 지정

이미지가 포함된 LatLngBounds를 제공합니다. LatLngBounds는 이미지의 북동쪽과 남서쪽 모서리를 설정합니다. 지도에 이미지를 그리면, 이미지가 회전되어 경계에 맞춰집니다. 경계가 원래의 가로세로 비율과 일치하지 않으면 이미지가 왜곡됩니다.

아래 코드는 남서쪽 모서리 경계가 40.712216,-74.22655이고 북동쪽 모서리 경계가 40.773941, -74.12544인 이미지를 지도에 배치합니다.

LatLngBounds newarkBounds = new LatLngBounds(
        new LatLng(40.712216, -74.22655),       // South west corner
        new LatLng(40.773941, -74.12544));      // North east corner
GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .positionFromBounds(newarkBounds);

그라운드 오버레이 이벤트 처리

기본적으로 그라운드 오버레이는 클릭할 수 없습니다. GroundOverlay.setClickable(boolean)을 호출하여 클릭을 활성화/비활성화할 수 있습니다.

OnGroundOverlayClickListener를 사용하여 클릭 가능한 그라운드 오버레이에서 클릭 이벤트를 수신합니다. 지도에 이 리스너를 설정하려면 GoogleMap.setOnGroundOverlayClickListener(OnGroundOverlayClickListener)를 호출합니다. 사용자가 그라운드 오버레이를 클릭하면 onGroundOverlayClick(GroundOverlay) 콜백을 수신합니다.

다음에 대한 의견 보내기...

Google Maps Android API
Google Maps Android API
도움이 필요하시나요? 지원 페이지를 방문하세요.