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);
}
});