• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

버튼 누를시 인포윈도우 닫는 방식 설명좀 다시 부탁드려도 될까요?

23.11.06 02:19 작성 조회수 217

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

  1. 빈 배열 객체 생성 let infowindow = [];

  2. 거기에 for문 돌면서 infowindow 집어넣기


    infowindowArray.push(infowindow);

1,2번 까지는 말 그대로 빈 배열객체를 생성후
기존의 infowindow를 집어넣어 기존의 자료가 들어간

infowindowArray를 만든것까진 알겠는데

그 이후에

3.

function closeInfoWindow(){

for (let infowindow of infowindowArray){

infowindow.close();

}

};

이게 무슨 말 일까요?

 

사실 모든 원리가 잘 이해가 되질 않습니다..ㅜㅜ

기존에는 그냥 인포윈도우 클릭하면 해당정보가 나타나고

그것을 다른 것을 누르면 끄려 그러는데

왜 빈 배열객체를 만드는지 부터 잘 이해가 안되네요..

답변 1

답변을 작성해보세요.

0

안녕하세요.

인포윈도우 하나만 끌때는 단순히 해당 객체의 close() 메서드를 호출하면 됩니다.

인포윈도우가 여러개 존재할 때는 각 객체의 close() 메서드를 호출해야 할 필요가 있습니다.

일일이 해당 객체의 변수명을 저장하여 호출하는 것은 번거로울 수 있습니다.

따라서 인포윈도우를 모두 한 리스트에 저장시켜두고 반복문을 활용해 각 객체의 close() 메서드를 호출하면 효율적으로 관리를 할 수 있게 됩니다.

따라서 배열부터 만들고, 거기에 각 객체를 저장하여 메서드를 호출하는 것입니다.

 

프로그래밍 흐름이 잘 이해가 안되시는 것을 고려하여 비유를 통해 설명드리자면,

10명의 사람이 있고 그들에게 도장을 찍어주는 일을 해야 한다고 생각해봅시다.

우리가 각 사람을 찾아다니며 일일이 찍어주는 것보단, 그들이 줄 지어서 한번에 도장을 받으러 온다면 훨씬 더 수월하겠습니다.

이러한 이유로 위와 같은 코드를 작성한 것이라고 이해해주시면 되겠습니다.

 

감사합니다.