콜백함수의 종료조건때문에 오류가 나는거 같은데 고수님들이나 운영자분 도움좀 주시면 감사하겠습니다

오류는 일단
Uncaught TypeError: Cannot read property ‘latlng’ of undefined
at allCafeMap (bigData.do:747)
at callback (bigData.do:712)
at services.js:6
at Object.oncomplete (services.js:6)
at XMLHttpRequest.a.onreadystatechange (services.js:5)

 미리 지정된 양식 사용은 4개의 띄어쓰기로 들여쓰세요.

unction geoAddr(allSido){
//시도의 좌표를 받을 배열
var sidoGeo=[];
var total= allSido.length;//시도 갯수
var counter=0;

var geocoder = new daum.maps.services.Geocoder();
				
					for(var i = 0 ; i<total;i++){
					
						var callback = function(result, status) {
						    if (status === daum.maps.services.Status.OK) {
						    		 var cy=result[0].y;
							         var cx=result[0].x;
							       		sidoGeo.push({
											title:result[0].address_name,
											latlng:new daum.maps.LatLng(cy, cx)
							       		})
							       		counter++;
						    	}; 
						    	if(total===counter){
									allCafeMap(sidoGeo);
					       		}
						        return result;
								
						    }
							geocoder.addressSearch(allSido[i].ctprvnNm, callback);	
						}
		 		};

function allCafeMap(sidoGeo){
//확인
var mapContainer = document.getElementById(‘map1’), // 지도를 표시할 div
mapOption = {
center: new daum.maps.LatLng(36.2683, 127.6358), // 지도의 중심좌표
level: 13 // 지도의 확대 레벨
};
// 지도를 표시할 div와 지도 옵션으로 지도를 생성합니다
var map = new daum.maps.Map(mapContainer, mapOption);
var positions=sidoGeo;
//마커를 표시할 위치와 title 객체 배열
//console.log(positions[0].latlng)
//마커는 나중에 css 로 만들거임
// 마커 이미지의 이미지 주소입니다
var imageSrc = “http://t1.daumcdn.net/localimg/localimages/07/mapapidoc/markerStar.png”;

				for(var i = 0 ; positions.length; i++){
					var imageSize = new daum.maps.Size(24,35);
					 // 마커 이미지를 생성합니다    
				    var markerImage = new daum.maps.MarkerImage(imageSrc, imageSize); 
				    
				    // 마커를 생성합니다
				    var marker = new daum.maps.Marker({
				        map: map, // 마커를 표시할 지도
				        position: positions[i].latlng, // 마커를 표시할 위치
				        title : positions[i].title, // 마커의 타이틀, 마커에 마우스를 올리면 타이틀이 표시됩니다
				        image : markerImage // 마커 이미지 
				    });
				  
				    daum.maps.event.addListener(marker, 'click', function() {
						//console.log(position);	
				    });
				    	
				}

allCafeMap에 좌표배열을 한번에 보내서 사용하기 위해 콜백함수에 대해 종료조건을 줬는데 위와같은오류가 떳는데 도움을 주셨으면 합니다.ㅜ
마커는 찍혔는데 console 창에는 위와 같은 오류가 떠서 다음작업(클릭이벤트에서 좌표를 못불러옴)에서 계속 막힙니다

allCafeMap 함수 안의 반복문을
for문이 아닌
positions.forEach로 변경해 보세요.

for문은 i값이 scope 유지를 하지 못하므로 문제가 됩니다.
아마도 반복문이 positions.length 값과 같은 값에서 i값의 증가가 멈추게 되고
후에 클릭 이벤트에서 positions[i]로 접근했을때 배열 range밖의 값을 참조에서 나는 에러일거에요.

3개의 좋아요

역시 킹갓두더지 형님이시네요 ㅜㅜ 한번에 해결되었습니다 .

2개의 좋아요

해결하셔서 다행입니다.

(이렇게 남자한테만 인기가 늘어간다…)

2개의 좋아요