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

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

QA

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

본문

아래소스에서 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

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

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초나 걸려야 한다면 쓸 수 없는 상태입니다

 

 

var aaa = getAddr(lat,lng);

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);

 

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

안되는가요?

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

방법은 두가지

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);


 

 

 

setTimeout(function(){ document.write(aaa); }, 8000);
이렇게 해도 안되네요;;;

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

답변을 작성하시기 전에 로그인 해주세요.
전체 123,529 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT