Colorbox Callback在代码完成执行之前加载帧

时间:2013-12-16 12:40:01

标签: javascript jquery callback colorbox

我正在使用jquery颜色框来加载谷歌地图静态图像。颜色框的标题应显示地图上显示的位置的地址。我无法在显示标题之前获取地址。我正在使用此处的getReverseGeoCode函数:Reverse Geocoding Code来获取给定纬度和经度坐标(不断更新)的地址。

我的代码:

$('.locationLink').unbind().click(function (e) {
    e.preventDefault();


mapImageURL = "Link To The Map Static Image with lat and long as parameters"
$.colorbox({
    iframe:false,
    width:"500px",
    height:"450px",
    html:"<img src = "+mapImageUrl+"></p>",
    onOpen: function(){
        getReverseGeocodingData(lat,long, function(address){
            formattedAddress = address;
        });
    },
    title:function(address){
        return formattedAddress;
    }
});
});

function getReverseGeocodingData(lat, lng, callback) {
    var latlng = new google.maps.LatLng(lat, lng);
    // This is making the Geocode request
    var geocoder = new google.maps.Geocoder();
    geocoder.geocode({ 'latLng': latlng }, function (results, status) {
        if (status !== google.maps.GeocoderStatus.OK) {
             alert(status);
         }

        // This is checking to see if the Geoeode Status is OK before proceeding
        if (status == google.maps.GeocoderStatus.OK) {
            address = (results[0].formatted_address);
            console.log('Address is:' + address);     
            callback(address);
        }

    });
}

问题在于lat和long不断更新(并且彩色框在打开时显示正确的静态图像),但地址“落后”&#39; (显示最后一个地址,而不是最近的地址)。

经过一些调试后,我得出结论,当颜色框加载时,getReverseGeocoding函数尚未完成执行(因此它不会显示最新的地址,而是显示最后一个lat的地址并且长时间使用)。

我的问题是如何在彩盒加载标题之前确保getReverseGeocoding函数已完成执行并获取最新地址?

非常感谢帮助人员,对不起,如果我错过了某个地方的支架,那么新的堆栈溢出。

彼得

0 个答案:

没有答案