카카오 맵 api 가이드 - * [여러개 마커 표시하기]에서 제공하는 코드에 추가하여
직접 등록한(지정한) 마커로 검색을 통해 이동하고 싶습니다. 어떻게 해야 하나요?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>여러개 마커에 이벤트 등록하기1</title>
</head>
<body>
<div id="map" style="margin:auto; width:80%;height:500px;"></div>
<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=7cff7b37e90ccd66adc37f2c702f64e7"></script>
<script>
var mapContainer = document.getElementById('map'), // 지도를 표시할 div
mapOption = {
center: new kakao.maps.LatLng(33.450701, 126.570667), // 지도의 중심좌표
level: 3 // 지도의 확대 레벨
};
var map = new kakao.maps.Map(mapContainer, mapOption); // 지도를 생성합니다
// 마커를 표시할 위치와 내용을 가지고 있는 객체 배열입니다
var positions = [
{
content: '<div style="padding:5px;"><table><tr><td><img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ-PzKPkaBml2cuimc2kyoUEaZkpLoRBFiwqDNXqkyBx-skrJjf0F_n&usqp=CAE&s"></td></tr><tr><td>A 스터디카페</td></tr><tr><td>오픈시간: 9:00<br>마감시간: 23:00<br><a href="https://map.kakao.com/link/map/Hello World!,33.450701,126.570667" style="color:blue" target="_blank">예약하기</a> <a href="https://map.kakao.com/link/to/Hello World!,33.450701,126.570667" style="color:blue" target="_blank"></td></tr></div>',
latlng: new kakao.maps.LatLng(33.450705, 126.570677)
},
{
content: '<div style="padding:5px;"><table><tr><td><img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ-PzKPkaBml2cuimc2kyoUEaZkpLoRBFiwqDNXqkyBx-skrJjf0F_n&usqp=CAE&s"></td></tr><tr><td>B 스터디카페</td></tr><tr><td>오픈시간: 9:00<br>마감시간: 23:00<br><a href="https://map.kakao.com/link/map/Hello World!,33.450701,126.570667" style="color:blue" target="_blank">예약하기</a> <a href="https://map.kakao.com/link/to/Hello World!,33.450701,126.570667" style="color:blue" target="_blank"></td></tr></div>',
latlng: new kakao.maps.LatLng(33.450936, 126.569477)
},
{
content: '<div style="padding:5px;"><table><tr><td><img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ-PzKPkaBml2cuimc2kyoUEaZkpLoRBFiwqDNXqkyBx-skrJjf0F_n&usqp=CAE&s"></td></tr><tr><td>C 스터디카페</td></tr><tr><td>오픈시간: 9:00<br>마감시간: 23:00<br><a href="https://map.kakao.com/link/map/Hello World!,33.450701,126.570667" style="color:blue" target="_blank">예약하기</a> <a href="https://map.kakao.com/link/to/Hello World!,33.450701,126.570667" style="color:blue" target="_blank"></td></tr></div>',
latlng: new kakao.maps.LatLng(33.450879, 126.569940)
},
{
content: '<div style="padding:5px;"><table><tr><td><img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ-PzKPkaBml2cuimc2kyoUEaZkpLoRBFiwqDNXqkyBx-skrJjf0F_n&usqp=CAE&s"></td></tr><tr><td>D 스터디카페</td></tr><tr><td>오픈시간: 9:00<br>마감시간: 23:00<br><a href="https://map.kakao.com/link/map/Hello World!,33.450701,126.570667" style="color:blue" target="_blank">예약하기</a> <a href="https://map.kakao.com/link/to/Hello World!,33.450701,126.570667" style="color:blue" target="_blank"></td></tr></div>',
latlng: new kakao.maps.LatLng(33.451393, 126.570738)
}
];
for (var i = 0; i < positions.length; i ++) {
// 마커를 생성합니다
var marker = new kakao.maps.Marker({
map: map, // 마커를 표시할 지도
position: positions[i].latlng // 마커의 위치
});
// 마커에 표시할 인포윈도우를 생성합니다
var infowindow = new kakao.maps.InfoWindow({
content: positions[i].content // 인포윈도우에 표시할 내용
});
// 마커에 mouseover 이벤트와 mouseout 이벤트를 등록합니다
// 이벤트 리스너로는 클로저를 만들어 등록합니다
// for문에서 클로저를 만들어 주지 않으면 마지막 마커에만 이벤트가 등록됩니다
kakao.maps.event.addListener(marker, 'mouseover', makeOverListener(map, marker, infowindow));
kakao.maps.event.addListener(marker, 'mouseout', makeOutListener(infowindow));
}
// 인포윈도우를 표시하는 클로저를 만드는 함수입니다
function makeOverListener(map, marker, infowindow) {
return function() {
infowindow.open(map, marker);
};
}
// 인포윈도우를 닫는 클로저를 만드는 함수입니다
function makeOutListener(infowindow) {
return function() {
infowindow.close();
};
}
for (var i = 0; i < positions.length; i ++) {
// 마커를 생성합니다
var marker = new kakao.maps.Marker({
map: map, // 마커를 표시할 지도
position: positions[i].latlng // 마커의 위치
});
// 마커에 표시할 인포윈도우를 생성합니다
var infowindow = new kakao.maps.InfoWindow({
content: positions[i].content // 인포윈도우에 표시할 내용
});
// 마커에 이벤트를 등록하는 함수 만들고 즉시 호출하여 클로저를 만듭니다
// 클로저를 만들어 주지 않으면 마지막 마커에만 이벤트가 등록됩니다
(function(marker, infowindow) {
// 마커에 mouseover 이벤트를 등록하고 마우스 오버 시 인포윈도우를 표시합니다
kakao.maps.event.addListener(marker, 'mouseover', function() {
infowindow.open(map, marker);
});
// 마커에 mouseout 이벤트를 등록하고 마우스 아웃 시 인포윈도우를 닫습니다
kakao.maps.event.addListener(marker, 'mouseout', function() {
infowindow.close();
});
})(marker, infowindow);
}
</script>
</body>
</html>