지도 구성하기

MapViewInfo 를 통해 지도구성을 이해하고 지도의 타입과 오버레이를 변경합니다.

1. 지도 구성 (MapViewInfo)


카카오지도는 어떤 데이터로 어떻게 그려질지 사전에 정의되서 서버에 의해 컨트롤 됩니다. 이렇게 미리 정의 된 설정을 가져오는 부분은 MapViewInfo 의 appName 으로, 지도 타입은 mapType 으로 설정합니다.

Property Description
appName 기본 값은 “openmap”. 다른 설정 사용은 문의 필요
mapType 기본 값은 MapType.NORMAL(“map”). 스카이뷰 외 다른 것 사용은 문의 필요
mapStyle 기본 값은 “default”. 다른 스타일 사용은 문의 필요

MapViewInfo 는 지도 시작 시에 KakaoMapReadyCallback 을 통해 설정 할 수 있습니다. 아래 코드는 지도 실행 중간에 MapViewInfo 를 변경하는 예제코드입니다.

kakaoMap.setOnMapViewInfoChangeListener(new KakaoMap.OnMapViewInfoChangeListener() {
    @Override
    public void onMapViewInfoChanged(MapViewInfo mapViewInfo) {
        // MapViewInfo 변경 성공 시 호출
    }

    @Override
    public void onMapViewInfoChangeFailed() {
        // MapViewInfo 변경 실패 시 호출
    }
});

kakaoMap.changeMapViewInfo(MapViewInfo.from("openmap", MapType.NORMAL));

2. 지도 타입 (MapType)


MapType 에서 제공하는 지도 외에 다른 타입의 지도 사용은 문의 가 필요합니다.

일반 지도
MapType.NORMAL
위성 지도
MapType.SKYVIEW

아래 코드는 지도타입을 바꾸는 예시입니다. 지도타입 변경 시 실패 할 수 있습니다. MapViewInfoChangeListener 리스너를 통해서 변경 성공 여부를 알 수 있습니다.

kakaoMap.setOnMapViewInfoChangeListener(new KakaoMap.OnMapViewInfoChangeListener() {
    @Override
    public void onMapViewInfoChanged(MapViewInfo mapViewInfo) {
        // MapType 변경 성공 시 호출
    }

    @Override
    public void onMapViewInfoChangeFailed() {
        // MapType 변경 실패 시 호출
    }
});

//1. MapType enum 이용하는 방법
kakaoMap.changeMapType(MapType.NORMAL);

//2. 문자로 넣는 방법
kakaoMap.changeMapType(getString(com.kakao.vectormap.R.string.normal_map));

3. 지도 오버레이 (MapOverlay)


지도 위에 MapOverlay 를 이용해서 다양한 부가정보를 올릴 수 있습니다. MapOverlay 에서 제공하는 오버레이 외에 다른 타입의 사용은 문의 가 필요합니다. 스카이뷰 도로라인 오버레이의 경우 MapType 이 스카이뷰 일 때만 적용됩니다.

자전거도로
BICYCLE_ROAD
로드뷰라인
ROADVIEW_LINE
지형도
HILLSHADING
스카아뷰 도로라인
SKYVIEW_HYBRID

아래 코드는 오버레이를 설정하는 예시입니다.

// 1. MapOverlay 로 자전거도로 오버레이 켜기
kakaoMap.showOverlay(MapOverlay.BICYCLE_ROAD);
// 2. 문자로 자전도로 오버레이 켜기
kakaoMap.showOverlay(getString(com.kakao.vectormap.R.string.overlay_bicycle_road));

// 3. MapOverlay 로 자전거도로 오버레이 끄기
kakaoMap.hidewOverlay(MapOverlay.BICYCLE_ROAD);
// 4. 문자로 자전도로 오버레이 끄기
kakaoMap.hidewOverlay(getString(com.kakao.vectormap.R.string.overlay_bicycle_road));