我正在尝试使用Google地理编码API从地址获取纬度和经度。我想将坐标存储在变量中以便稍后使用它们。我知道它是一个异步调用。在下面的代码中我尝试使用函数useCordinates将坐标分配给一个全局变量,以便我以后可以使用它。但是我在调试时没有定义坐标。我是javascript的新手。我读到暗示全局变量的地方没有需要定义。
myGlobalVar ='Hello world'; 谢谢你的帮助。
function codeAddress(address){
var loc=[];
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
// no need to define it in outer function now
loc[0]=results[0].geometry.location.lat();
loc[1]=results[0].geometry.location.lng();
useCordinates( loc );
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}
function useCordinates(cordinateArray){
cordinates= cordinateArray;
}
functionTestCodeAddress(){
start = document.getElementById('start').value;
codeAddress(start);
//assign the global variable 'cordinates'
document.getElementById('start').value=cordinates;
}
答案 0 :(得分:2)
问题不在于变量,当尝试访问变量时,问题是。
目前,您在调用codeAddress()之后立即在TestCodeAddress()内部执行此操作,这是因为此时异步请求尚未完成,所以提前完成。
你可以,例如移动这一行:
document.getElementById('start').value=cordinates;
进入useCordinates()