index.html 3.35 KB
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>다음 지도 API</title>
</head>

<body>
    <div id="map" style="width:100%;height:100vh;"></div>

    <script
        src="https://dapi.kakao.com/v2/maps/sdk.js?appkey=9e4f94c8089b558cf9d25a267a86eea9&libraries=clusterer"></script>
    <script>
        var mapContainer = document.getElementById('map'), // 지도를 표시할 div 
            mapOption = {
                center: new kakao.maps.LatLng(37.350040, 127.108901), // 지도의 중심좌표
                level: 3, // 지도의 확대 레벨
                mapTypeId: kakao.maps.MapTypeId.ROADMAP // 지도종류
            };

        // 지도를 생성한다 
        var map = new kakao.maps.Map(mapContainer, mapOption);

        // 마커 클러스터러를 생성합니다 
        var clusterer = new kakao.maps.MarkerClusterer({
            map: map, // 마커들을 클러스터로 관리하고 표시할 지도 객체 
            averageCenter: true, // 클러스터에 포함된 마커들의 평균 위치를 클러스터 마커 위치로 설정 
            minLevel: 10 // 클러스터 할 최소 지도 레벨 
        });
        var data = [
            [37.350040, 127.108901, '<div style="padding: 5px;">Hello World!</div>'],
            [37.366090, 127.108056, '<div style="padding: 5px;">Hello World!</div>'],
            [37.378040, 127.108245, '<div style="padding: 5px;">Hello World!</div>']
        ]

        var markers = [];

        for (var i = 0; i < data.length; i++) {
            //지도에 마커를 생성하고 표시한다
            var marker = new kakao.maps.Marker({
                position: new kakao.maps.LatLng(data[i][0], data[i][1]),
                map: map // 마커를 표시할 지도 객체
            });

            var iwContent = data[i][2], // 인포윈도우에 표출될 내용으로 HTML 문자열이나 document element가 가능합니다
                iwPosition = new kakao.maps.LatLng(data[i][0], data[i][1]), //인포윈도우 표시 위치입니다
                iwRemoveable = true; // removeable 속성을 ture 로 설정하면 인포윈도우를 닫을 수 있는 x버튼이 표시됩니다

            // 인포윈도우를 생성하고 지도에 표시합니다
            var infowindow = new kakao.maps.InfoWindow({
                map: map, // 인포윈도우가 표시될 지도
                position: iwPosition,
                content: iwContent,
                removable: iwRemoveable
            });

            infowindow.open(map, marker);
            markers.push(marker);
            kakao.maps.event.addListener(marker, 'mouseover', makeOverListener(map, marker, infowindow));
            kakao.maps.event.addListener(marker, 'mouseout', makeOutListener(infowindow));
        }

        // 클러스터러에 마커들을 추가합니다
        clusterer.addMarkers(markers);

        function makeOverListener(map, marker, infowindow) {
            return function () {
                infowindow.open(map, marker);
            };
        }

        // 인포윈도우를 닫는 클로저를 만드는 함수입니다 
        function makeOutListener(infowindow) {
            return function () {
                infowindow.close();
            };
        }


// 아래 코드는 인포윈도우를 지도에서 제거합니다
// infowindow.close();        
    </script>
</body>

</html>