현재 지도에서 마커 표시 및 커스텀 오버레이까지 잘 나오는데요 닫기버튼 클릭시
Uncaught ReferenceError: closeOverlay is not defined
at HTMLDivElement.onclick 라는 에러가 뜹니다.
아래는 코드 부분입니다.
var Content = '<div class = "wrap">' +
' <div class="info">' +
' <div class="title">' +
positions[i].medical_name +
' <div class="close" onclick="closeOverlay(' + i + ')" title="닫기"></div>' +
' </div>' +
' <div class="body">' +
' <div class="img">' +
' <img src="1.png" width="73" height="70">' +
' </div>' +
' <div class="desc">' +
' <div class="ellipsis"> ' + positions[i].medical_ad + '</div>' +
' <div class="jibun"> ' + positions[i].medical_tel + '</div>' +
' <div><a href=" "target="_blank" class="link">홈페이지</a></div>' +
' </div>' +
' </div>' +
' </div>' +
' </div>';
var medOverlay = new kakao.maps.CustomOverlay({
content : Content,
position: medMarker.getPosition()
});
ovList[i] = medOverlay;
kakao.maps.event.addListener(medMarker, 'click', makeOverListener(map, medOverlay));
}
function makeOverListener(map, medOverlay) {
return function() {
for (var i = 0; i < ovList.length; i++) {
ovList[i].setMap(null);
}
medOverlay.setMap(map);
};
}
function closeOverlay(i) {
ovList[i].setMap(null);
}
검색 해서 HTML DOM createElement() Method 를 사용하라는 글도 봐서
해보았는데 커스텀 오버레이가 계속해서 나오질 않아
따로 코드 첨부 후 질문 올립니다 !!
위의 답변처럼 써야 onclick이 제대로 동작합니다.
답변 감사합니다 ! 링크 주신 게시글 들어가서 확인해보고 작성해보았는데요
오버레이가 아예 나오지 않습니다 ㅠㅠ…
var latlng = new kakao.maps.LatLng(positions[i].lat, positions[i].lng);
var medMarker = new kakao.maps.Marker({
map : map,
position : latlng,
title : positions[i].medical_name,
image : markerImage
});
var overlay = new kakao.maps.CustomOverlay({
position : latlng
});
var content = document.createElement('div');
content.className = 'overlay';
content.innerHTML = '파크 :D';
var closeBtn = document.createElement('button');
closeBtn.src = "close.png";
closeBtn.onclick = function() {
overlay.setMap(null);
};
content.appendChild(closeBtn);
overlay.setContent(content);
kakao.maps.event.addListener(medMarker, 'click', function() {
overlay.setMap(map);
});
웹페이지 들어가서 f12로 확인해봐도 오류가 안나와서 잘 모르겠네요
어디가 문제인걸까요…? ㅠㅠ
제가 드린 답변 중에 일부 잘못된 부분이 있긴 하나,
동작 자체는 크게 문제 없습니다.
아래에 조금 더 정제된 코드를 첨부해 드리니 참고해 주세요.
javascript:
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 latlng = new kakao.maps.LatLng(33.450701, 126.570667);
var medMarker = new kakao.maps.Marker({
map : map,
position : latlng
});
var overlay = new kakao.maps.CustomOverlay({
yAnchor: 3,
position : latlng
});
var content = document.createElement('div');
content.className = 'overlay';
content.innerHTML = '파크 :D';
var closeBtn = document.createElement('button');
closeBtn.innerHTML = '닫기';
closeBtn.onclick = function() {
overlay.setMap(null);
};
content.appendChild(closeBtn);
overlay.setContent(content);
kakao.maps.event.addListener(medMarker, 'click', function() {
overlay.setMap(map);
});
CSS:
.overlay {
background-color: white;
}