jquery推迟了地理编码结果

时间:2015-02-16 13:21:28

标签: javascript jquery google-maps callback deferred

因为谷歌地图编码是一个异步函数,我试图使用延迟的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);

   });
}

真诚地感谢您的帮助。非常感谢!

0 个答案:

没有答案