위토즈 - 개발자프로그램판매공간

정보공유

[API] [다음 지도 api] 클러스터러 + 인포윈도우 + 사용자콘트롤박스

 

다음 지도 api 를 이용한 클러스터러 + 인포윈도우 + 사용자콘트롤박스 입니다.

 

api 키는 http://apis.map.daum.net/ 에서 발급받으시면 됩니다.

 

556336a87690a4fe584201ea476b121d_1477013007_9258.png

 

 

 

css 단

 

 

.wrap {position: absolute;left: 0;bottom: 40px;width: 288px;height: 132px;margin-left: -144px;text-align: left;overflow: hidden;font-size: 12px;font-family: 'Malgun Gothic', dotum, '돋움', sans-serif;line-height: 1.5;}
.wrap * {padding: 0;margin: 0;}
.wrap .info {width: 286px;height: 120px;border-radius: 5px;border-bottom: 2px solid #ccc;border-right: 1px solid #ccc;overflow: hidden;background: #fff;}
.wrap .info:nth-child(1) {border: 0;box-shadow: 0px 1px 2px #888;}
.info .title {padding: 5px 0 0 10px;height: 30px;background: #eee;border-bottom: 1px solid #ddd;font-size: 18px;font-weight: bold;}
.info .close {position: absolute;top: 10px;right: 10px;color: #888;width: 17px;height: 17px;background: url('http://i1.daumcdn.net/localimg/localimages/07/mapapidoc/overlay_close.png');}
.info .close:hover {cursor: pointer;}
.info .body {position: relative;overflow: hidden;}
.info .desc {position: relative;margin: 13px 0 0 90px;height: 75px;}
.desc .ellipsis {overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}
.desc .jibun {font-size: 11px;color: #888;margin-top: -2px;}
.info .img {position: absolute;top: 6px;left: 5px;width: 73px;height: 71px;border: 1px solid #ddd;color: #888;overflow: hidden;}
.info:after {content: '';position: absolute;margin-left: -12px;left: 50%;bottom: 0;width: 22px;height: 12px;background: url('http://i1.daumcdn.net/localimg/localimages/07/mapapidoc/vertex_white.png')}
.info .link {color: #5085BB;}

.map_wrap {position:relative;overflow:hidden;}
.radius_border{border:1px solid #919191;border-radius:5px;}     
.custom_typecontrol {position:absolute;top:10px;right:10px;overflow:hidden;width:130px;height:30px;margin:0;padding:0;z-index:1;font-size:12px;font-family:'Malgun Gothic', '맑은 고딕', sans-serif;}
.custom_typecontrol span {display:block;width:65px;height:30px;float:left;text-align:center;line-height:30px;cursor:pointer;}
.custom_typecontrol .btn {background:#fff;background:linear-gradient(#fff,  #e6e6e6);}       
.custom_typecontrol .btn:hover {background:#f5f5f5;background:linear-gradient(#f5f5f5,#e3e3e3);}
.custom_typecontrol .btn:active {background:#e6e6e6;background:linear-gradient(#e6e6e6, #fff);}    
.custom_typecontrol .selected_btn {color:#fff;background:#425470;background:linear-gradient(#425470, #5b6d8a);}
.custom_typecontrol .selected_btn:hover {color:#fff;}   
.custom_zoomcontrol {position:absolute;top:50px;right:10px;width:36px;height:80px;overflow:hidden;z-index:1;background-color:#f5f5f5;} 
.custom_zoomcontrol span {display:block;width:36px;height:40px;text-align:center;cursor:pointer;}     
.custom_zoomcontrol span img {width:15px;height:15px;padding:12px 0;border:none;}             
.custom_zoomcontrol span:first-child{border-bottom:1px solid #bfbfbf;}   

 

 

 

javascript 단 

 

<script type="text/javascript" src="//apis.daum.net/maps/maps3.js?apikey=[다음API키]&libraries=clusterer"></script>
<script>

    var mapContainer = document.getElementById('map'), // 지도를 표시할 div 
    mapOption = { 
        center: new daum.maps.LatLng(37.55496653314019, 126.97579237424095), // 지도의 중심좌표
        level: 10 // 지도의 확대 레벨
    }; 

    var map = new daum.maps.Map(mapContainer, mapOption); // 지도를 생성합니다
    
    // 마커 클러스터러를 생성합니다 
    var clusterer = new daum.maps.MarkerClusterer({
        map: map, // 마커들을 클러스터로 관리하고 표시할 지도 객체 
        averageCenter: true, // 클러스터에 포함된 마커들의 평균 위치를 클러스터 마커 위치로 설정 
        minLevel: 10 // 클러스터 할 최소 지도 레벨 
    });
 
    // 데이터를 가져오기 위해 jQuery를 사용합니다
    // 데이터를 가져와 마커를 생성하고 클러스터러 객체에 넘겨줍니다
    $.get("./list.data.json.php", function(data) {
        // 데이터에서 좌표 값을 가지고 마커를 표시합니다
        // 마커 클러스터러로 관리할 마커 객체는 생성할 때 지도 객체를 설정하지 않습니다
        var markers = $(data.positions).map(function(i, position) {
            var maks = new daum.maps.Marker({
                map: map,
                position : new daum.maps.LatLng(position.lat, position.lng)
            });
            
            var infowindow = new daum.maps.InfoWindow({
                content: position.html,
                removable : true
            });

            daum.maps.event.addListener(maks, 'click', makeOverListener(map, maks, infowindow));
            daum.maps.event.addListener(maks, 'mouseout', makeOutListener(infowindow));

            return maks;

        });

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

    // 인포윈도우를 표시하는 클로저를 만드는 함수입니다 
    function makeOverListener(map, marker, infowindow) {
        infowindow.close();
        return function() {
            infowindow.open(map, marker);
        };
    }

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

    function setMapType(maptype) { 
        var roadmapControl = document.getElementById('btnRoadmap');
        var skyviewControl = document.getElementById('btnSkyview'); 
        if (maptype === 'roadmap') {
            map.setMapTypeId(daum.maps.MapTypeId.ROADMAP);    
            roadmapControl.className = 'selected_btn';
            skyviewControl.className = 'btn';
        } else {
            map.setMapTypeId(daum.maps.MapTypeId.HYBRID);    
            skyviewControl.className = 'selected_btn';
            roadmapControl.className = 'btn';
        }
    }

    // 지도 확대, 축소 컨트롤에서 확대 버튼을 누르면 호출되어 지도를 확대하는 함수입니다
    function zoomIn() {
        map.setLevel(map.getLevel() - 1);
    }

    // 지도 확대, 축소 컨트롤에서 축소 버튼을 누르면 호출되어 지도를 확대하는 함수입니다
    function zoomOut() {
        map.setLevel(map.getLevel() + 1);
    }
</script>

 

 

php json 단

 

 

<?php
header('Content-Type: application/json');

die('{
  "positions": [
    {
      "html":"서울시 중구 중구동 중2203", 
      "lat": 37.27943075229118,
      "lng": 127.01763998406159
    },
    {
      "html":"서울시 중구 중구동 중2203", 
      "lat": 37.27953075229118,
      "lng": 127.01763998406159
    },
    {
      "html":"서울시 중구 중구동 중2203", 
      "lat": 37.55915668706214,
      "lng": 126.92536526611102
    },
    {
      "html":"서울시 중구 중구동 중2203", 
      "lat": 37.55995668706214,
      "lng": 126.95536526611102
    } 
  ]
}');
 

 

 

 

 

정보공유
Total 444건 19 페이지
번호 제목 글쓴이 날짜 조회
174 연락처 앞대가리 목록 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-14 35760
173 페이스북 GRAPH API & IFRAME BASE FACEBOOK APPLICATION DEVELOPMENT 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-03 47882
172 저작권 걱정없는 무료글꼴 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-01 51146
171 엑셀 다운로드 할때 깨질경우. 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-28 40791
170 [javascript] YYYY-MM-DD 값을 한글날짜로 리턴. 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-28 43090
169 네이버 Maps Javascript API V3 - 클릭한 지점에 마커 찍고 정보 레이어로 보여주기. 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-26 41141
168 네이밍, 코딩룰 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-24 51586
167 무통장입금확인 후 주문목록에서 바로 입금완료처리 기능 추가하기 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-21 41523
열람중 [다음 지도 api] 클러스터러 + 인포윈도우 + 사용자콘트롤박스 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-21 55623
165 [javascript] 구글 자동 번역 API 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-20 47730
164 그누보드에 nginx fastcgi_cache 적용하기 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-20 56952
163 SMS발송 반드시 발신번호를 등록해야합니다. 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-20 50893
162 [asp] 네이버 스마트 에디터 파일업로드 소스 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-19 45196
161 KCP 웹표준모듈 적용 코드 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-21 38473
160 [javascript] 입력필드(사용자가 키보드를 처서 입력하는)의 입력값이 숫자만 들어가도록 할 때 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-20 38432