我正在使用google maps API,只要我将变量返回给codeLatLng函数的初始化函数,它声明未定义。如果我从codeLatLng打印变量,它显示正常。如何从Google Maps JavaScript geocoder回调中返回变量?
var geocoder;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(40.730885,-73.997383);
var addr = codeLatLng();
document.write(addr);
}
function codeLatLng() {
var latlng = new google.maps.LatLng(40.730885,-73.997383);
if (geocoder) {
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
return results[1].formatted_address;
} else {
alert("No results found");
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
}
打印出不确定
如果我做的:
var geocoder;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(40.730885,-73.997383);
codeLatLng();
}
function codeLatLng() {
var latlng = new google.maps.LatLng(40.730885,-73.997383);
if (geocoder) {
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
document.write(results[1].formatted_address);
} else {
alert("No results found");
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
}
打印出纽约,NY 10012,USA
是吗?可能返回addr的值?我应该如何将addr分配给变量? – AbtPst 2016-02-17 22:32:19
@AbtPst:在异步调用中不能返回任何结果,因为调用在返回结果之前返回。我在哪里放置了alert(addr);'是你可以使用结果的地方。可以将值分配给全局变量,但是您仍然需要等待该值到达。对, – Guffa 2016-02-18 00:33:07
是的,没关系。实际上我有一个拉特朗数值的数组。我想迭代地处理数组并不断地将地址添加到列表中。顺便说一下,有没有办法一次性反转地理编码的纬度值数组?以及如何将addr分配给全局变量?我可以只在函数内执行x = addr吗? – AbtPst 2016-02-18 00:39:18