Javascript 谷歌地图API v3 JS:为什么我没有从这个函数中得到任何回报?

Javascript 谷歌地图API v3 JS:为什么我没有从这个函数中得到任何回报?,javascript,php,google-maps,google-maps-api-3,Javascript,Php,Google Maps,Google Maps Api 3,我正在使用谷歌地图API地理编码器尝试从一个地址获取lat/lng 这是我的密码: <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript"> function geocodeAddress(address) { geocoder.geocode

我正在使用谷歌地图API地理编码器尝试从一个地址获取lat/lng

这是我的密码:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
    function geocodeAddress(address) {
        geocoder.geocode({address:address}, function (results,status){
            if (status == google.maps.GeocoderStatus.OK) {
                var p = results[0].geometry.location;
                var lat=p.lat();
                var lng=p.lng();
                var location = '{'+lat+','+lng+'}';
                // If I alert(location) here, I get the correct lat/lng
                return location;
                // The return isn't happening?
            } else {
                alert('GeoCoder problem');
            }
        });
    }

    var geocoder = new google.maps.Geocoder();
    var point = geocodeAddress('Cape Town Carnival, Somerset Road, Green Point, South Africa');
    alert(point);  // this returns "Undefined".
</script>

功能地理编码地址(地址){
geocoder.geocode({address:address},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
var p=results[0]。geometry.location;
var-lat=p.lat();
var lng=p.lng();
变量位置='{'+lat+','+lng+'}';
//如果我在此处发出警报(位置),我将获得正确的lat/lng
返回位置;
//回归没有发生吗?
}否则{
警报(“地理编码器问题”);
}
});
}
var geocoder=new google.maps.geocoder();
var point=地理编码地址(“南非绿点萨默塞特路开普敦狂欢节”);
警报(点);//这将返回“未定义”。
这是在FF。我没有收到任何JS错误。我不是JS专家。有人能看出我做错了什么吗

谢谢


J

因为
geocode()
是一个异步函数,所以您会得到
未定义的
。
要获得结果,您必须(例如)将回调函数传递给
geocodeAddress()
,并在获得位置时调用该函数

 function geocodeAddress(address, succCallback) {
        geocoder.geocode({address:address}, function (results,status){
            if (status == google.maps.GeocoderStatus.OK) {
                var p = results[0].geometry.location;
                var lat=p.lat();
                var lng=p.lng();
                var location = '{'+lat+','+lng+'}';

                succCallback(location);
            } else {
                alert('GeoCoder problem');
            }
        });
    }

var geocoder = new google.maps.Geocoder();
var point = geocodeAddress(
    'Cape Town Carnival, Somerset Road, Green Point, South Africa', 
    function(l) {
        alert(l);
    });

这是一个异步调用。您需要调用一个函数,并将位置作为参数传递