从谷歌地理编码api获取latLong



我正在尝试使用Google Geocoding API从地址中获取纬度和经度。我想把坐标存储在一个变量中,以便以后使用。我知道这是一个异步调用。在下面的代码中,我尝试使用函数useCorinates将坐标分配给全局变量,以便以后可以使用它。但我在调试时没有定义corinates。我是javascript的新手。我在某个地方读到,隐含的全局变量不需要定义。

myGlobalVar="你好世界";谢谢你的帮助。

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

问题不在于变量,问题在于当您尝试访问变量时。

目前,您在调用codeAddress()之后立即在TestCodeAddress()中执行此操作,这是早期的操作,因为此时异步请求尚未完成。

例如,您可以移动以下行:

document.getElementById('start').value=cordinates; 

进入useCordinates()

相关内容

  • 没有找到相关文章

最新更新