在本文下面有代码我尝试过
我想实现这个:外部函数geocoder.geocode有一个名为 var address 的变量。 geocoder.geocode ...从latlng获取地址,我想通过此row address = results[1].formatted_address;
设置地址
但可变地址可能在外面不可见。
致电时:alert('Inside: '+ address)
地址正确设置,
但是当我在函数alert ('Outside address: '+address)
之外调用它时,地址返回空字符串,所以设置地址可能只是本地,我想要实现的是将其设置在功能之外,以便能够使用此功能。我错了什么?
var geocoder = new google.maps.Geocoder();
var myPosition = new google.maps.LatLng(41.850033, -87.6500523);
var address = "";
//get address
geocoder.geocode({'latLng': myPosition}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
address = results[1].formatted_address;
alert('Inside: '+ address);
} else {
alert('No results found');
}
} else {
alert('Geocoder failed due to: ' + status);
}
});
alert ('Outside address: '+address);
修改:
事实证明,它是同步通信的问题。在执行geocoder.geocode之前执行外部警报。那么我可以以某种方式停止执行脚本,直到它将被执行?以某种方式同步它,以便能够使用此变量吗?
答案 0 :(得分:0)
我检查的第一件事是我的操作顺序,可能是在您的地理编码器执行之前警报正在执行,尝试在整个javascript运行后在控制台视图中运行警报。
如果地址仍未声明,请在您的行上执行此操作。
window.address = results[1].formatted_address;
这会将地址设置为窗口变量,这与在任何函数之外声明var地址的范围相同。