Javascript Colorbox回调在代码完成执行之前加载帧

Javascript Colorbox回调在代码完成执行之前加载帧,javascript,jquery,callback,colorbox,Javascript,Jquery,Callback,Colorbox,我正在使用jquery颜色框加载google地图静态图像。颜色框的标题应显示地图上显示的位置的地址。然而,在显示标题之前,我很难获得地址。我正在使用这里找到的getReverseGeoCode函数:获取给定纬度和经度坐标(不断更新)的地址 我的代码: $('.locationLink').unbind().click(function (e) { e.preventDefault(); mapImageURL = "Link To The Map Static Image with

我正在使用jquery颜色框加载google地图静态图像。颜色框的标题应显示地图上显示的位置的地址。然而,在显示标题之前,我很难获得地址。我正在使用这里找到的getReverseGeoCode函数:获取给定纬度和经度坐标(不断更新)的地址

我的代码:

$('.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);
        }

    });
}
$('.locationLink')。解除绑定()。单击(函数(e){
e、 预防默认值();
mapImageURL=“使用lat和long as参数链接到地图静态图像”
$彩色盒({
iframe:false,
宽度:“500px”,
高度:“450px”,
html:“

”, onOpen:function(){ getReverseGeocodingData(横向、纵向、函数(地址){ 格式化地址=地址; }); }, 标题:职能(地址){ 返回格式化的地址; } }); }); 函数getReverseGeocodingData(lat、lng、回调){ var latlng=新的google.maps.latlng(lat,lng); //这是发出地理编码请求 var geocoder=new google.maps.geocoder(); geocoder.geocode({'latLng':latLng},函数(结果,状态){ if(status!==google.maps.GeocoderStatus.OK){ 警报(状态); } //这是在继续之前检查Geoeode状态是否正常 if(status==google.maps.GeocoderStatus.OK){ 地址=(结果[0]。格式化的地址); console.log('地址为:'+地址); 回拨(地址); } }); }
问题是lat和long不断更新(并且颜色框在打开时显示正确的静态图像),但是地址“滞后”(显示最后一个地址,而不是最近的地址)

经过一些调试后,我得出结论,当colorbox加载时,getReverseGeoCode函数尚未完成执行(因此它不显示最近的地址,而是显示最后一个lat和长期使用的地址)

我的问题是,在colorbox加载标题之前,如何确保GetReverseGeoCode函数已完成执行并获得最新地址

真的很感谢大家的帮助,如果我错过了一个括号,对不起,新的堆栈溢出


Peter

您是否能够从colorbox中提取
getReverseGeocodingData
函数调用,以便它加载正确的信息,然后打开colorbox?您的意思是在初始化colorbox之前调用它?如果是这样的话,那么是的,我有,但是当colorbox初始化时它还没有完成执行,我可能应该更清楚。单击按钮时打开颜色框,然后代码将获取当前lat long,获取静态地图图像,并将lat long转换为显示为标题的地址将地理代码函数调用绑定到click事件,并将颜色框打开到地理代码回调。如果你发布你的点击监听器,我可以详细说明。嗨,现在,我已经更新了我的代码,包括点击监听器