인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

퀀텀코더님의 프로필 이미지
퀀텀코더

작성한 질문수

비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지

맛집 클릭시 상세 조회 + 유튜브 섬네일 따기, 지도 중심 이동

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

작성

·

296

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

Jiwoon Jeong님의 프로필 이미지
Jiwoon Jeong
지식공유자

안녕하세요.

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

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

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

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

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

 

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

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

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

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

 

감사합니다.

퀀텀코더님의 프로필 이미지
퀀텀코더

작성한 질문수

질문하기