谷歌地图的地理编码

问题描述:

你好我有如下Return address from Google Maps Geocoder v3相同probem,我不明白怎么我的全局变量设置为返回vlaue谷歌地图的地理编码

我得到这个在其中b返回undefined此刻

var a; 
var b; 
function outputGeo(result){ 
    b = result; 
    } 


geocoder.geocode({'latLng': event.latLng},function(results, status) { 

     a = results[1].formatted_address; 
     outputGeo(a); 
     }); 
alert(b); 

geocoder.geocode是一个异步函数,因为它执行JSONP请求。换句话说,在结果返回之前,alert(b)行已被调用。您需要在outputGeo(a)之后将该alert行放入回调函数中。

Javascript是一种有趣的语言。直到我研究了JSONP和Javascript的同步之前,这个异步的事情让我感到困扰。我建议你这样做。了解这一点的好方法是编写一个你自己的JSONP请求包装器。 (只是一个想法。)