var mapContainer = document.getElementById('mainmap'), // ÁöµµÀÇ Áß½ÉÁÂÇ¥ mapOption = { center: new kakao.maps.LatLng(37.599858, 126.908443), // ÁöµµÀÇ Áß½ÉÁÂÇ¥ level: 8 // ÁöµµÀÇ È®´ë ·¹º§ }; var map = new daum.maps.Map(mapContainer, mapOption); // Áöµµ¸¦ »ý¼ºÇÕ´Ï´Ù // ÀÏ¹Ý Áöµµ¿Í ½ºÄ«À̺ä·Î Áöµµ ŸÀÔÀ» ÀüȯÇÒ ¼ö ÀÖ´Â ÁöµµÅ¸ÀÔ ÄÁÆ®·ÑÀ» »ý¼ºÇÕ´Ï´Ù var mapTypeControl = new kakao.maps.MapTypeControl(); // Áöµµ¿¡ ÄÁÆ®·ÑÀ» Ãß°¡ÇØ¾ß ÁöµµÀ§¿¡ Ç¥½ÃµË´Ï´Ù // kakao.maps.ControlPositionÀº ÄÁÆ®·ÑÀÌ Ç¥½ÃµÉ À§Ä¡¸¦ Á¤ÀÇÇϴµ¥ TOPRIGHT´Â ¿À¸¥ÂÊ À§¸¦ ÀǹÌÇÕ´Ï´Ù map.addControl(mapTypeControl, kakao.maps.ControlPosition.TOPRIGHT); // HTML5ÀÇ geolocationÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´ÂÁö È®ÀÎÇÕ´Ï´Ù if (navigator.geolocation) { // GeoLocationÀ» ÀÌ¿ëÇؼ­ Á¢¼Ó À§Ä¡¸¦ ¾ò¾î¿É´Ï´Ù navigator.geolocation.getCurrentPosition(showYourLocation) } else { // HTML5ÀÇ GeoLocationÀ» »ç¿ëÇÒ ¼ö ¾øÀ»¶§ ¸¶Ä¿ Ç¥½Ã À§Ä¡¸¦ ¼³Á¤ÇÕ´Ï´Ù var locPosition_fail = new kakao.maps.LatLng(37.60482553409294, 126.91587716079252); map.setCenter(locPosition_fail) } function showYourLocation(position) { var lat = position.coords.latitude, // À§µµ lon = position.coords.longitude; // °æµµ var locPosition = new kakao.maps.LatLng(lat, lon); // ¸¶Ä¿°¡ Ç¥½ÃµÉ À§Ä¡¸¦ geolocationÀ¸·Î ¾ò¾î¿Â ÁÂÇ¥·Î »ý¼ºÇÕ´Ï´Ù // Áöµµ Áß½ÉÁÂÇ¥¸¦ Á¢¼ÓÀ§Ä¡·Î º¯°æÇÕ´Ï´Ù map.setCenter(locPosition); // ¸¶Ä¿¿Í ÀÎÆ÷À©µµ¿ì¸¦ Ç¥½ÃÇÕ´Ï´Ù displayMarker(locPosition); } function panToposition(position) { var lat = position.coords.latitude, // À§µµ lon = position.coords.longitude; // °æµµ var locPosition = new kakao.maps.LatLng(lat, lon); // ¸¶Ä¿°¡ Ç¥½ÃµÉ À§Ä¡¸¦ geolocationÀ¸·Î ¾ò¾î¿Â ÁÂÇ¥·Î »ý¼ºÇÕ´Ï´Ù // Áöµµ Áß½ÉÁÂÇ¥¸¦ Á¢¼ÓÀ§Ä¡·Î º¯°æÇÕ´Ï´Ù map.panTo(locPosition); } function showErrorMsg(error) { switch (error.code) { case error.PERMISSION_DENIED: alert("À§Ä¡Á¤º¸ ¾×¼¼½º°¡ °ÅºÎ µÇ¾ú½À´Ï´Ù.\nºê¶ó¿ìÀúÀÇ À§Ä¡Á¤º¸ ¾×¼¼½º »óŸ¦ È®ÀÎ ¹Ù¶ø´Ï´Ù.") navigator.geolocation.getCurrentPosition(showYourLocation) break; case error.POSITION_UNAVAILABLE: alert("À§Ä¡Á¤º¸¸¦ È®ÀÎ ÇÒ ¼ö ¾ø½À´Ï´Ù.\n»ç¹æÀÌ Æ®ÀÎ ³ÐÀº °÷¿¡¼­ ´Ù½Ã ½Ãµµ ¹Ù¶ø´Ï´Ù.") navigator.geolocation.getCurrentPosition(showYourLocation) break; case error.TIMEOUT: alert("À§Ä¡Á¤º¸¸¦ È®ÀÎ ÇÒ ¼ö ¾ø½À´Ï´Ù.\n»ç¹æÀÌ Æ®ÀÎ ³ÐÀº °÷¿¡¼­ ´Ù½Ã ½Ãµµ ¹Ù¶ø´Ï´Ù.") navigator.geolocation.getCurrentPosition(showYourLocation) break; case error.UNKNOWN_ERROR: alert("À§Ä¡Á¤º¸¸¦ È®ÀÎ ÇÒ ¼ö ¾ø½À´Ï´Ù.\nÀá½Ã ÈÄ ´Ù½Ã ½Ãµµ ¹Ù¶ø´Ï´Ù..") navigator.geolocation.getCurrentPosition(showYourLocation) break; } } // Áöµµ¿¡ ¸¶Ä¿¿Í ÀÎÆ÷À©µµ¿ì¸¦ Ç¥½ÃÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù function displayMarker(locPosition) { var imageSrc = 'https://rosha.co.kr/bizdemo69656/img/homepee/images/currnt_posit.png', // ¸¶Ä¿À̹ÌÁöÀÇ ÁÖ¼ÒÀÔ´Ï´Ù imageSize = new kakao.maps.Size(70, 35), // ¸¶Ä¿À̹ÌÁöÀÇ Å©±âÀÔ´Ï´Ù imageOption = { offset: new kakao.maps.Point(35, 0), alt: "ÇöÀç À§Ä¡ ¸¶Ä¿" }; // ¸¶Ä¿À̹ÌÁöÀÇ ¿É¼ÇÀÔ´Ï´Ù. ¸¶Ä¿ÀÇ ÁÂÇ¥¿Í ÀÏÄ¡½Ãų À̹ÌÁö ¾È¿¡¼­ÀÇ ÁÂÇ¥¸¦ ¼³Á¤ÇÕ´Ï´Ù. // ¸¶Ä¿ÀÇ À̹ÌÁöÁ¤º¸¸¦ °¡Áö°í ÀÖ´Â ¸¶Ä¿À̹ÌÁö¸¦ »ý¼ºÇÕ´Ï´Ù var markerImage = new kakao.maps.MarkerImage(imageSrc, imageSize, imageOption); // ¸¶Ä¿¸¦ »ý¼ºÇÕ´Ï´Ù //var marker = new kakao.maps.Marker({ // map: map, // position: locPosition, // image: markerImage, // zIndex: 1 //}); // Áöµµ¿¡ Ç¥½ÃÇÒ ¿øÀ» »ý¼ºÇÕ´Ï´Ù var circle = new kakao.maps.Circle({ center: locPosition, // ¿øÀÇ Áß½ÉÁÂÇ¥ ÀÔ´Ï´Ù radius: 2500, // ¹ÌÅÍ ´ÜÀ§ÀÇ ¿øÀÇ ¹ÝÁö¸§ÀÔ´Ï´Ù strokeWeight: 2, // ¼±ÀÇ µÎ²²ÀÔ´Ï´Ù strokeColor: 'rgb(190 150 70 / 0.8 )', // ¼±ÀÇ »ö±òÀÔ´Ï´Ù strokeOpacity: 1, // ¼±ÀÇ ºÒÅõ¸íµµ ÀÔ´Ï´Ù 1¿¡¼­ 0 »çÀÌÀÇ °ªÀ̸ç 0¿¡ °¡±î¿ï¼ö·Ï Åõ¸íÇÕ´Ï´Ù strokeStyle: 'shortdot', // ¼±ÀÇ ½ºÅ¸ÀÏ ÀÔ´Ï´Ù fillColor: 'rgb(190 150 70 / 0.3)', // ä¿ì±â »ö±òÀÔ´Ï´Ù fillOpacity: 0.7, // ä¿ì±â ºÒÅõ¸íµµ ÀÔ´Ï´Ù zIndex: 1 }); // Áöµµ¿¡ ¿øÀ» Ç¥½ÃÇÕ´Ï´Ù circle.setMap(map); } // Áöµµ È®´ë, Ãà¼Ò ÄÁÆ®·Ñ¿¡¼­ È®´ë ¹öÆ°À» ´©¸£¸é È£ÃâµÇ¾î Áöµµ¸¦ È®´ëÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù function zoomIn() { map.setLevel(map.getLevel() - 1); } // Áöµµ È®´ë, Ãà¼Ò ÄÁÆ®·Ñ¿¡¼­ Ãà¼Ò ¹öÆ°À» ´©¸£¸é È£ÃâµÇ¾î Áöµµ¸¦ È®´ëÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù function zoomOut() { map.setLevel(map.getLevel() + 1); } function panTo() { if (navigator.geolocation) { // GeoLocationÀ» ÀÌ¿ëÇؼ­ Á¢¼Ó À§Ä¡¸¦ ¾ò¾î¿É´Ï´Ù navigator.geolocation.getCurrentPosition(panToposition, showErrorMsg) } else { // HTML5ÀÇ GeoLocationÀ» »ç¿ëÇÒ ¼ö ¾øÀ»¶§ ¸¶Ä¿ Ç¥½Ã À§Ä¡¸¦ ¼³Á¤ÇÕ´Ï´Ù var locPosition = new kakao.maps.LatLng(37.604825, 126.915877); map.panTo(locPosition) }; } // ¸¶Ä¿ Ŭ·¯½ºÅÍ·¯¸¦ »ý¼ºÇÕ´Ï´Ù var clusterer = new kakao.maps.MarkerClusterer({ map: map, // ¸¶Ä¿µéÀ» Ŭ·¯½ºÅÍ·Î °ü¸®ÇÏ°í Ç¥½ÃÇÒ Áöµµ °´Ã¼ averageCenter: true, // Ŭ·¯½ºÅÍ¿¡ Æ÷ÇÔµÈ ¸¶Ä¿µéÀÇ Æò±Õ À§Ä¡¸¦ Ŭ·¯½ºÅÍ ¸¶Ä¿ À§Ä¡·Î ¼³Á¤ minLevel: 8, // Ŭ·¯½ºÅÍ ÇÒ ÃÖ¼Ò Áöµµ ·¹º§ calculator: [2, 5, 10], //Ŭ·¯½ºÅÍ Å©±âº° ±¸ºÐ gridSize: 100, minClusterSize: 2, styles: [{ width: '40px', height: '40px', background: 'rgba(59, 46, 122, .4)', borderRadius: '20px', color: '#FFF', textAlign: 'center', fontWeight: 'bold', lineHeight: '38px', boxShadow: 'rgb(50 50 50 / 40%) 0px 2px 3px 0px', font: 'Noto Sans' }, { width: '40px', height: '40px', background: 'rgba(59, 46, 122, .6)', borderRadius: '20px', color: '#FFF', textAlign: 'center', fontWeight: 'bold', lineHeight: '38px', boxShadow: 'rgb(50 50 50 / 40%) 0px 2px 3px 0px', font: 'Noto Sans' }, { width: '40px', height: '40px', background: 'rgba(59, 46, 122, .8)', borderRadius: '20px', color: '#FFF', textAlign: 'center', fontWeight: 'bold', lineHeight: '38px', boxShadow: 'rgb(50 50 50 / 40%) 0px 2px 3px 0px', font: 'Noto Sans' } ] }); // ¸ÅÀå Á¤º¸¸¦ Æ÷ÇÔÇÑ JSON °¡Á®¿À±â $.ajax({ url: "../img/homepee/js/shop_location.json", dataType: "json" }) .done(function (data) { //console.log(data) // JSON Àç°¡°ø ÈÄ ¹è¿­ »ý¼º var loc_dat = []; //Àç°¡°ø µ¥ÀÌÅÍ À̸§ for (var i = 0; i < data.length; i++) { var content = { name: data[i].Name, add: data[i].Address, tel: data[i].Tel, url: data[i].Url, latlng: new kakao.maps.LatLng(data[i].lat, data[i].lng) } loc_dat.push(content); }; //console.log(loc_dat); //console.log(loc_dat[0]) // È°¼ºÈ­ µÈ ¿À¹ö·¹ÀÌ Á¤ÀÇ var clickedOverlay = null; for (var i = 0; i < loc_dat.length; i++) { var data = loc_dat[i]; displayMarker(data); } function displayMarker(data) { //¸¶Ä¿ ¼³Á¤ ³»¿ë var Src = "https://rojanie1996.cafe24.com/bizdemo69656/img/homepee/images/marker2.png"; var Size = new kakao.maps.Size(70, 35); var Options = { offset: new kakao.maps.Point(35, 33) // ¸¶Ä¿ ÁÂÇ¥¿¡ ÀÏÄ¡½Ãų À̹ÌÁö ¾ÈÀÇ ÁÂÇ¥ }; var markerImage = new kakao.maps.MarkerImage(Src, Size, Options); //console.log(markerImage) //console.log(loc_dat.latlng) //¸¶Ä¿ »ý¼º var marker = new kakao.maps.Marker({ map: map, position: loc_dat[i].latlng, alt: loc_dat[i].name, image: markerImage, zIndex: 1 }); //console.log(marker) //Ä¿½ºÅÒ ¿À¹ö·¹ÀÌ »ý¼º var overlay = new kakao.maps.CustomOverlay({ position: marker.getPosition(), //¸¶Ä¿¿¡¼­ À§Ä¡¸¦ °¡Á®¿É´Ï´Ù yAnchor: 0.6, zIndex: 3 //content: '' }); //console.log(overlay) // »ý¼ºµÈ ¸¶Ä¿¸¦ ¹è¿­·Î Markers¿¡ ³Ö±â var markers = []; markers.push(marker) // ¿À¹ö·¹ÀÌ ÄÜÅÙÃ÷ DOM------------------------------------------------------------------------ // ÃÖ»óÀ§ div var content = document.createElement('div'); content.className = 'wrap' // info div var info = document.createElement('div'); info.className = 'info' content.appendChild(info) // title div [¸ÅÀå¸í+´Ý±â¹öÆ°] var title = document.createElement('div'); title.className = 'title', title.innerHTML = loc_dat[i].name; info.appendChild(title) var closeBtn = document.createElement('button'); closeBtn.className = 'close' closeBtn.innerHTML = ''; closeBtn.onclick = function () { overlay.setMap(null); }; info.appendChild(closeBtn); // body var body = document.createElement('div'); body.className = 'body', info.appendChild(body) // body div -> info div // dsec [ÁÖ¼Ò+¿¬¶ôó+url] var desc = document.createElement('div'); desc.className = 'desc', body.appendChild(desc) // ÁÖ¼Ò var ellipsis = document.createElement('div'); ellipsis.className = 'ellipsis', ellipsis.innerHTML = loc_dat[i].add desc.appendChild(ellipsis) // ¿¬¶ôó var tel = document.createElement('div'); tel.className = 'tel', tel.innerHTML = '[ÀüÈ­¹øÈ£] ' + loc_dat[i].tel + '' desc.appendChild(tel) // url ÃÖ»óÀ§ var url = document.createElement('div'); url.className = 'url', desc.appendChild(url) var url_btn = document.createElement('div'); url_btn.className = 'url_btn', url_btn.innerHTML = 'ÀÚ¼¼ÇÑ Á¤º¸ º¸±â' url.appendChild(url_btn) // DOM ±¸¼º ³¡ --------------------------------------------------------------------------- overlay.setContent(content); kakao.maps.event.addListener(marker, 'click', function () { if (clickedOverlay) { clickedOverlay.setMap(null); } overlay.setMap(map); clickedOverlay = overlay; }); //console.log(markers) clusterer.addMarkers(markers); } });