[FAQ] 지도/로컬 API 문의 전 꼭 읽어 주세요.
https://devtalk.kakao.com/t/faq-api/125610
카카오맵api 코드를 가져와서 이것저것 해보고 있습니다
kakao.maps.event.addListener(marker, 'click', function () {
displayInfowindow(marker, place.place_name + '<br>' + place.address_name);
});
지도에 생성된 마커를 클릭시 displayInfowindow가 잘 작동되는데
한번 더 클릭해서 displayInfowindow를 끄고싶은데 어떻게 해야할지 감이 잘 안잡혀요ㅠㅠ
displayInfowindow 함수에
infowindow.open(map…)과 같은 코드가 있을겁니다.
open메소드는 map객체에 인포윈도우 객체를 바인딩한다는 뜻이기 때문에
infowindow.getMap()을 하면 map객체가 리턴되게 됩니다.
그럼 지도위에 있다는 뜻이 되고
그럼 open함수를 실행시키지 말고, close()함수를 실행시켜서 끄시면 됩니다.
if (infowindow.getMap()){
infowindow.close();
} else {
infowindow.open(map, marker);
}
단순하게 이렇게도 구현이 가능하고,
특정 플래그변수를 이용해서, open했을때와 close했을때의 변수의 값을 바꿔서 처리할 수도있습니다.
또한 indowindow가 1개만 있다면,
전역또는 다른 변수가 접근할 수 있는 스코프에 해당 변수를 두고,
map객체의 일반 click이벤트 발생시(즉 마커클릭이 아닌 이외의 클릭) indowindow를 끄게 할 수도 있습니다.
어떻게 구현을 하느냐, 어떤것을 구현하느냐에 따라 방법은 많습니다.
간단하게 저거 외에도 아주 많습니다.
참고해 보세요.
또한 다른 샘플을 더 참고해 보셔도 됩니다.
1개의 좋아요