[Kakao지도] 지도 배경 변경하기

     

     

    지도 배경 변경하기

     

     

     

      카카오지도 맵 타일 변경하기, 감추기

    카카오지도에 불러 온 서울시의 모습

     카카오 지도를 불러왔다. 그러나 여기서 중요한 것은 서울시에 대한 저 하얀색 부분이며, 그 외는 중요하지가 않다.

     

    그래서 저 지도를 어떻게하면 좋을까 생각하다가 만들어진 방법이다.

     

     

     

      첫 번째 방법, 오버레이 적용

    카카오지도에 오버레이 적용

     카카오 지도에 오버레이 기능을 적용하여 만들었다.

    지도 위에 커튼막을 세워서, 가려주는 기법이다.

     

    보통 이런 가리는 용이 아니라서 그런지 지도의 확대, 축소 할 때마다 지도가 보이는 것을 알 수 있다.

     

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ include file="/WEB-INF/layout/header.jsp" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>커스텀 타일셋2</title>
    
    </head>
    <body>
    <div id="map" style="width:100%;height:850px;"></div>
    
    <script>
        var mapContainer = document.getElementById('map'), // 지도를 표시할 div
            mapOption = {
                center: new kakao.maps.LatLng(37.566826, 126.9786567), // 지도의 중심좌표
                level: 3 // 지도의 확대 레벨
            };
    
        // 지도를 표시할 div와  지도 옵션으로  지도를 생성합니다
        var dmap = new kakao.maps.Map(mapContainer, mapOption);
    
        // Tileset을 생성하고 지도 오버레이로 추가합니다
        kakao.maps.Tileset.add('TILE_NUMBER',
            new kakao.maps.Tileset({
                width: 256,
                height: 256,
                getTile: function(x, y, z) {
                    var div = document.createElement('div');
                    div.innerHTML = x + ', ' + y + ', ' + z;
                    div.style.fontSize = '36px';
                    div.style.fontWeight = 'bold';
                    div.style.lineHeight = '256px'
                    div.style.textAlign = 'center';
                    div.style.color = '#4D4D4D';
                    div.style.background = '#ff0';
                    div.style.border = '1px dashed #ff5050';
                    return div;
                }
            }));
    
        // 지도 위에 TILE_NUMBER 오버레이 레이어를 추가합니다
        dmap.addOverlayMapTypeId(kakao.maps.MapTypeId.TILE_NUMBER);
    
    </script>
    </body>
    </html>

    해당 소스는 카카오지도 API SCRIPT만 제외하고 올린 소스이다.

    오버레이 기능을 활용하고 싶다면 해당 소스를 이용하면 된다.

     

    위 방법은 html의 div과 css방법을 사용해서 지도를 가리는 방법이다.

     

     

      두 번째 방법, 카카오 맵 변경하기

     

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ include file="/WEB-INF/layout/header.jsp" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>커스텀 타일셋1</title>
    
    </head>
    <body>
    <img src="${pageContext.request.contextPath}/js/map/test.jpg">
    <div id="map" style="width:100%;height:850px;"></div>
    
    <script>
        var domain = 'https://i1.daumcdn.net';
        var path = '/dmaps/apis/openapi/sampleimg/';
        var plan = function( x, y, z ) {
            y = -y - 1;
            var limit = Math.ceil( 3 / Math.pow( 2, z ) );
    
            return "http://localhost:8090/MEARI/js/map/test.jpg";
    
            /*
            if ( 0 <= y && y < limit && 0 <= x && x < limit ) {
                return domain + path + 'planh' +
                    z + '_' + y + '_' + x + '.png';
            } else {
                return 'https://i1.daumcdn.net/dmaps/apis/dark.png';
            }
            */
        };
    
        kakao.maps.Tileset.add( 'PLAN',
            new kakao.maps.Tileset(
                512, 512, plan, '', false, 0, 2 ) );
    
        var node = document.getElementById( 'map' );
        var map = new kakao.maps.Map( node, {
            projectionId: null,
            mapTypeId: kakao.maps.MapTypeId.PLAN,
            $scale: false,
            center: new kakao.maps.Coords( 650, -550 ),
            level: 2
        } );
        var center = map.getCenter();
        var marker = new kakao.maps.Marker({
            position: center
        });
        marker.setMap(map);
    
        var infowindow = new kakao.maps.InfoWindow({
            content: '커스텀 타일셋을 올릴수 있습니다!'
        });
        infowindow.open(map, marker);
    </script>
    </body>
    </html>

     해당글은 사진을 통해서 가리는 방식이다.

    각 좌표마다 자신의 프로젝트 경로의 사진을 불러와서 지도를 가리는 방법을 사용했다.

    반응형

    댓글

    Designed by JB FACTORY