안녕하세요
react로 카카오 맵을 사용해 기능 구현 중에 있다가 도무지 답이 나오지않아 조언 구하려고 글을 씁니다.
newData 안에는 아래의 첨부된 사진처럼 각각 제가 각각 선택한 좌표들이 들어있는데, 이게 day객체에 맞춰서 filter된 배열들을 뿌려줍니다.
그래서 의존배열로 data가 바뀔때 마다 화면을 리랜더링 시켜주면서 지도에는 newData에 각각 다르게 들어있는 좌표마다 마커를 찍게끔 구현을 했다고 생각했습니다.
하지만 최초 접속시에만 정상적으로 마커가 보이고 리랜더링이 발생하면 좌표따라 화면은 움직이지만 마커는 찍히지 않는 문제가 있습니다.
setMap(null)
setPin([]) ; // 제가 구현한 좌표 state 이름
으로 초기화도 진행해봤는데 여전히 그대로라 답답한 마음에 여기에 글을 씁니다.
아래는 제가 작성한 코드 전문입니다.
-------코드--------
useEffect(() => {
console.log(data);
if (data.pin.length !== 0) {
const container = document.getElementById("map");
const newData = data.pin.filter((item) => item.day === nowDay);
const options = {
center: new kakao.maps.LatLng(newData[0].lat, newData[0].lng),
level: 3,
};
const kakaoMap = new kakao.maps.Map(container, options);
setMap(kakaoMap);
// removeMarker();
console.log(newData);
newData.forEach((el) => {
setMap(null);
// 마커를 생성합니다
new kakao.maps.Marker({
//마커가 표시 될 지도
map: map,
//마커가 표시 될 위치
position: new kakao.maps.LatLng(el.lat, el.lng),
//마커에 hover시 나타날 title
title: el.title,
});
});
setMap(map);
}
}, [data]);