지도api 활용하는 코드몽키입니다!

제가 db로 부터 주소값과 특징을 가져와서 배열에 담은 후 주소는 addressSearch를 사용해서 위도/경도로 바꿔준후 지도에 마커로 표시하고 마커를 클릭했을 떄 마커 위에 특징을 담은 배열의 요소를 표시할 인포윈도우를 생성하려고 합니다.
현재 가져온 주소값을 통해 지도에 마커표시는 잘 됐습니다. 하지만 같이 받아온 특징값들은 표시가 안되고 계속 undefined
라고만 뜨내요 ㅠㅠ, 제가 자바스크립트에 대한 이해도가 높지 못해서 자세히 이해를 못했습니다…
어떤 식으로 풀어나가야 할지 방향성을 제시해주실 수 있나요.,…?
질문1
질문2

for문 내에서 스코프가 유지되지 않아 생긴 문제입니다.
for문을 forEach문으로 대체하거나
es6문법 let/const를 사용해서 스코프를 유지시켜주세요.

1개의 좋아요

제가 이해를 잘 못해서 그런데요 ㅠㅠ 일단 스코프가 유지안된다는게 배열변수 자체가 전역변수가 아니라 내용을 못받는다는 뜻인가요? for each를 사용해야 하면 어디를 대체 해야 하는지 궁금합니다… 제가 배열변수를 let으로 타입설정하려고 하는데 let이 안되서요 ㅠ

for문에 var를 let으로 변경하거나

for (let i=0; i<addressArray.length; i++)

forEach문을 사용해주세요.

addressArray.forEach((address, i) => {
    geocoder.addressSearch(address, function(result, status) {});        
});

그리고 스코프 유지 관련해서는 addressSearch 콜백 함수에 로그를 출력해서
console.log('callback', i, feature[i], feature);
아래 답변을 같이 보시면 이해가 빠를 것 같습니다.
링크 참고해주세요.

1개의 좋아요

와!!! 해결했습니다!!! 감사합니다 ㅠㅠ

1개의 좋아요