[FAQ] 지도/로컬 API 문의 전 꼭 읽어 주세요.
1번 .
const displayInfowindow = (marker: any, title: string, click: boolean) => {
let content =
`<div style="padding: 10px; z-index: 1; font-size: 15px; font-weight: bold;">
${title}
</div>`;
let newInfowindow = new kakao.maps.CustomOverlay({
position: new kakao.maps.LatLng(marker.n.La, marker.n.Ma),
zIndex: 9999,
});
newInfowindow.setContent(content);
newInfowindow.setMap(map);
// 클릭 이벤트에 따라 인포윈도우를 닫는 동작을 설정
if (click) {
// 클릭 이벤트가 발생하면 5초 후에 인포윈도우를 닫음
setTimeout(() => {
newInfowindow.setMap(null);
}, 5000);
} else {
// 마우스가 마커에서 벗어났을 때 인포윈도우를 닫음
kakao.maps.event.addListener(marker, 'mouseout', function() {
newInfowindow.setMap(null);
});
}
};
2번 .
const displayInfowindow = (marker: any, title: string, click: boolean) => {
let content =
`<div style="padding: 10px; z-index: 1; font-size: 15px; font-weight: bold;">
${title}
</div>`;
let newInfowindow = new kakao.maps.InfoWindow({
zIndex: 1,
removeable: true,
});
newInfowindow?.setContent(content);
newInfowindow?.open(map, marker);
console.log(newInfowindow.getMap());
// 클릭 이벤트에 따라 인포윈도우를 닫는 동작을 설정
if (click) {
// 클릭 이벤트가 발생하면 5초 후에 인포윈도우를 닫음
setTimeout(() => {
newInfowindow.close();
}, 5000);
} else {
// 마우스가 마커에서 벗어났을 때 인포윈도우를 닫음
kakao.maps.event.addListener(marker, 'mouseout', function() {
newInfowindow.close();
});
}
}
같은 상황에서 (2번)인포윈도우를 생성이 되고, (1번)커스텀 오버레이는 생성되지 않습니다. 콘솔로그로 찍어보니 커스텀오버레이 객체는 생성되는 것 같은데, setMap에서 맵에 표시되지 않는 것 같습니다.
인포윈도우를 사용하는 다른 함수도 사용하고 있는데, 1번 함수를 실행해보았을 때는 다른 함수에서의 인포윈도우도 생성되지 않고 있습니다. 2번을 실행했을 때는 모두 정상작동합니다.
인포윈도우는 기본적으로 카카오맵에서 창을 제공해주고 그 안에서만 css 가 적용되는 것 같아서 커스텀 오버레이를 사용하려 합니다. 인포윈도우 창 자체의 스타일을 바꿀 수 있다면 그 방법도 알려주시면 감사하겠습니다.