채택완료

자바스크립트 질문드립니다..

2022-06-28 (화) 00:21:08 1,855

아래소스에서 document.write 의 주석을 풀면 주소가 표기되는데요

return 받아서 하단에서 불러오면 undefined 뜹니다..

어느문법이 잘못되었는지 좀 봐주실분.. 감사드리겠습니다..

<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=키값&libraries=services"></script>

<script>
let lat = 33.450701;
let lng = 126.570667;

function getAddr(lat,lng){
    let geocoder = new kakao.maps.services.Geocoder();

    let coord = new kakao.maps.LatLng(lat, lng);
    let callback = function(result, status) {
        if (status === kakao.maps.services.Status.OK) {
            //console.log(result);
            return result[0].address.address_name;
            //document.write(result[0].address.address_name);
        }
    };

    geocoder.coord2Address(coord.getLng(), coord.getLat(), callback);

}

aaa = getAddr(lat,lng);
document.write(aaa);
</script>

|

답변 4개 / 댓글 3개

채택된 답변
+20 포인트

몇가지 방법으로 테스트 해보니 일반적인 방법으로 값이 잘 전달이 안되는 것 같고 아래처럼 하세요

var add
function getAddr(lat,lng){
    let geocoder = new kakao.maps.services.Geocoder();
    let coord = new kakao.maps.LatLng(lat, lng);
    let callback = function(result, status) {
        if (status === kakao.maps.services.Status.OK) {
            console.log(result);
//     alert( result[0].road_address.address_name);
      add= result[0].address.address_name;
  //document.write(add);
        }
    }

   geocoder.coord2Address(coord.getLng(), coord.getLat(), callback);
}

 getAddr(lat,lng);
setTimeout(function(){document.write(add); alert(add) }, 500);//<---8000(8초)까지는 필요 없습니다. 8초나 걸려야 한다면 쓸 수 없는 상태입니다

답변에 대한 댓글 1개

2022-06-28 (화) 23:31:11
이렇게 하니 되네요 정말정말 감사합니다!!!!
2일을 고생했는데 정말 감사합니다!!!

안되는가요?

함수내에서는 나오는데 함수 밖에서 값이 안나온다면 함수에서 값을 추출하기도 전에 함수밖의 코드가 실행 되어서 입니다

방법은 두가지

1. return result[0].address.address_name; <--이 자리에 값을 출력하는 코드를 넣는다

document.write(result[0].address.address_name);

2. 주소를 추출하는 시간 동안의 딜레이를 약간 주어서 값을 출력한다

var aaa = getAddr(lat,lng);
setTimeout(function(){ document.write(aaa); }, 1000);

답변에 대한 댓글 1개

2022-06-28 (화) 18:44:09
setTimeout(function(){ document.write(aaa); }, 8000);
이렇게 해도 안되네요;;;

document.write(result[0].address.address_name);
이렇게는 되긴했는데... 위의 방법이 깔끔한것같아서 계쏙 이리저리해보고 있는데 안되네요..ㅜㅜ
2022-06-28 (화) 06:14:53

var aaa = getAddr(lat,lng);

답변에 대한 댓글 1개

2022-06-28 (화) 15:56:57
let lat = 33.450701;
let lng = 126.570667;

function getAddr(lat,lng){
let geocoder = new kakao.maps.services.Geocoder();

let coord = new kakao.maps.LatLng(lat, lng);
let callback = function(result, status) {
if (status === kakao.maps.services.Status.OK) {
console.log(result);
return result[0].address.address_name;
//document.write(result[0].address.address_name);
}
};

geocoder.coord2Address(coord.getLng(), coord.getLat(), callback);

}

var aaa = getAddr(lat,lng);
document.write(aaa);



이렇게 해도 안되는데용..ㅜㅜ

답변을 작성하려면 로그인이 필요합니다.