因为谷歌地图编码是一个异步函数,我试图使用延迟的jquery来暂停一个函数,直到调用另一个函数的结果准备就绪。 我在这里要做的是,让城市有人点击,然后再打一次电话,以获得该城市的中心。所以我需要传回该函数的结果以获得该城市的中心,并希望将它们推送到包含原始函数信息的数组中。我从来没有使用过延迟(只读了半天!)所以我有点不确定如何做到这一点。
.when()似乎没有像我期望的那样延迟函数,因为.when中的警报似乎在返回来自被调用函数的任何警报之前触发。
此外,我似乎无法将函数的结果传递回main函数。
function getGroupLatLng(groupname){
var deferred = new $.Deferred();
geocoder.geocode( { 'address': groupname}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
alert(results[0].geometry.location.lat());
} else {
}
deferred.resolve(results);
});
return deferred.promise();
}
function codeLatLng() {
geocoder.geocode({'latLng': latlng}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var city = extractLongFromAddress(results[0].address_components, "sublocality");
var groups = [];
if (city) {
var townName=city;
groups.push({name: townName,
type: "city"
});
alert("above");
$.when(getGroupLatLng(townName)).then(function(results){ //I am trying to delay this function until the results form the getGroupLatLng(townName) are retrieved.
alert("inside");
groups.push({lat:results[0].geometry.location.lat(),
lng:results[0].geometry.location.lng()
});
});
alert("below");
}
groups = JSON.stringify(groups);
console.log(groups);
});
}
真诚地感谢您的帮助。非常感谢!