我正在使用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