我想获取Google Maps API geocode()函数的结果,以便将其用于其他功能。 我已将下面的代码放在OnClick事件上,以反转地理编码在地图上单击的点的地址。
始终具有点击的前一个点值。 示例:我第一次点击它有'undefined',第二次它有我之前点击的点的地址,依此类推。
var address ;
my_listener = google.maps.event.addListener(map, 'click', function(event) {
codeLatLng(event.latLng);
});
function codeLatLng(mylatLng) {
geocoder = new google.maps.Geocoder();
var latlng = mylatLng;
geocoder.geocode({'latLng': latlng}, function(results, status)
{
if (status == google.maps.GeocoderStatus.OK)
{
if (results[1])
{
address = results[1].formatted_address;
}
}
});
alert(address);
}
答案 0 :(得分:2)
如果您将在回调中移动alert
,您将看到新地址:
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK)
{
if (results[1])
{
address = results[1].formatted_address;
alert(address); //moved here
}// ^
}// |
});// |
//-------------
地理编码过程 asyncronous ,所以在这种情况下:
geocoder.geocode({'latLng': latlng}, function(results, status) {
//We be called after `alert(address);`
});
alert(address);
alert
将在从服务器接收地理编码数据之前执行,并且将调用回调function(results, status){}
。