2010-04-14 8 views
0

codeAddress 함수의 latlon 변수를 반환하는 방법은 무엇입니까? 아마도 범위 때문에 반환 latlon가 작동하지 않지만 어떻게 작동하게하는지 확신 할 수 없습니다.동일한 함수의 메소드 콜백 데이터에서 함수의 변수를 반환하십시오.

function codeAddress(addr) { 
     if (geocoder) { 
      geocoder.geocode({ 'address': addr}, function(results, status) { 
        if (status == google.maps.GeocoderStatus.OK) { 
        var latlon = results[0].geometry.location.c+","+results[0].geometry.location.b; 
        } else { 
         alert("Geocode was not successful for the following reason: " + status); 
        } 

     }); 
    } 
    } 

답변

0

geocoder.geocode가 제공 한 콜백/클로저에 결과를 반환하므로 codeAddress에서 geocoder.geocode의 결과를 반환 할 수 없습니다. 함수 codeAddress에 대한 인수로 주어진 콜백을 사용하여 진행해야합니다.

geocoder.geocode에 주어진 콜백에서 geocoder.geocode로 되돌아 오는 내용은 응용 프로그램에서 의미가 없습니다. geocoder.geocode에 제공하는 콜백에서 애플리케이션의 일부 함수를 호출해야합니다.

이것은 API의 Geocoding Requests 섹션에서 설명합니다.

+0

감사합니다. 저는 jquery ajax 콜백에서 여러 번이 문제에 대처하여 오늘 생각하지 않았습니다. 두뇌 부양에 감사드립니다. – aran

1

, 외부 함수에서 변수를 선언 내부 기능에서 설정하고 외부에 반환 :

function codeAddress(addr) { 
    var returnCode = false; 
    if (geocoder) { 
    geocoder.geocode({ 'address': addr}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
     var latlon = results[0].geometry.location.c+","+results[0].geometry.location.b; 
     returnCode = true; 
     } else { 
     alert("Geocode was not successful for the following reason: " + status); 
     } 
    }); 
    } 
    return returnCode; 
} 

참고 :이에만 작동합니다 내부 기능이 바로 실행되는 경우 !

+0

geocoder.geocode는 결과를 리턴하는 유일한 방법은 제공된 콜백을 통해 비동기 메소드 호출을 수행 할 수 있기 때문에 수행하지 않을 수도 있습니다. – Ernelli