지도 구성하기
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));