일다 코드 먼저 보여드리겠습니다.
var open = false
.
.
.
const addMarker = (
lat: number,
lng: number,
map: kakao.maps.Map,
idx: number,
clickData: PlaceData[],
) => {
const imageSrc = ‘images/mapPage/Marker.png’;
let imageSize = new kakao.maps.Size(30, 30);
let markerImage = new kakao.maps.MarkerImage(imageSrc, imageSize);
var markerPosition = new kakao.maps.LatLng(lat, lng);
var marker = new kakao.maps.Marker({
position: markerPosition,
image: markerImage,
});
markers[idx] = marker; //이미지랑 위치만 가지고 있는 객체
kakao.maps.event.addListener(markers[idx], ‘click’, () => {
console.log(open);
openInfoWindow(map, markers, lat, lng, idx, clickData); //placeData는 사실 없어도 문제없는 데이터
});
marker.setMap(map);
};
// 마커틀릭시 인포윈도우 창을 띄어주는 함수
const openInfoWindow = (
map: kakao.maps.Map,
markers: kakao.maps.Marker[],
lat: number,
lng: number,
idx: number,
clickData: PlaceData[],
) => {
var iwContent = windowContents(idx, clickData); //윈도우의 HTML String
var iwPosition = new kakao.maps.LatLng(lat, lng); //윈도우 인포를 띄울 위치
var infoWindow = new kakao.maps.InfoWindow({
position: iwPosition,
content: iwContent,
removable: true,
});
if (open === false) {
infoWindow.open(map, markers[idx]);
open = !open;
} else {
infoWindow.close(); //작동X
open = !open; //정상작동
}
};
else문에있는 infoWindow.close();함수가 동작하지 않습니다. 분명 조건문의 조건은 통과했음에도 작동하지 않습니다. 어디에 문제가 있는건가요?