谷歌地图中的javascript变量不可用,太混乱了!

谷歌地图中的javascript变量不可用,太混乱了!,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我正在使用google maps v3,在使用StreetViewService检查标记处的streetview时遇到了一个非常复杂的情况。在我的“loadMap”函数中,我使用以下方法运行此检查: //more 'loadMap' function code above and below this var streetViewCheck = new google.maps.StreetViewService(); streetViewCheck.getPanoramaByLocatio

我正在使用google maps v3,在使用StreetViewService检查标记处的streetview时遇到了一个非常复杂的情况。在我的“loadMap”函数中,我使用以下方法运行此检查:

//more 'loadMap' function code above and below this

var streetViewCheck = new google.maps.StreetViewService();  
streetViewCheck.getPanoramaByLocation(latlng, 50, function(result, status) {
    if (status == google.maps.StreetViewStatus.ZERO_RESULTS) {
        streetViewAvailable = 0;        
    }else{
        streetViewAvailable = 1;
    }
});
alert(streetViewAvailable);
上述警报将抛出此js错误消息“streetViewAvailable未定义”,并且该变量在整个函数中的任何位置都不可用。但是,如果我将警报放在此处:

var streetViewCheck = new google.maps.StreetViewService();  
streetViewCheck.getPanoramaByLocation(latlng, 50, function(result, status) {
    if (status == google.maps.StreetViewStatus.ZERO_RESULTS) {
        streetViewAvailable = 0;
        alert(streetViewAvailable);     
    }else{
        streetViewAvailable = 1;
        alert(streetViewAvailable);
    }
});
它们正确地发出警报(即,如果街景不可用,则为0;如果街景可用,则为1),但该变量在函数中的任何位置都不可用。现在对于真正令人困惑的部分,变量在其他函数中可用

到底发生了什么事?为什么我的变量没有在初始化它的函数中定义,而是在其他函数中定义并可用。我不是世界上最伟大的程序员(但也不是最差的程序员!),但这让我完全不知所措。我尝试了许多选项,但结果都是一样的(例如,在我的新google.maps.StreetViewService()上初始化变量'streetViewAvailable';编码,为它们指定'yes'和'no'值,而不是1和0,使它们成为局部变量而不是全局变量(var streetViewAvailable…),以及前面提到的所有组合,但都具有相同的结果,未在此函数中定义

请帮助我理解这一点,它也让我们的其他编码人员感到困惑,它违背了所有的逻辑!!!在此之前,我非常感谢,我希望有人能在我的大脑内爆之前对此给予解释

//more 'loadMap' function code above and below this var streetViewAvailable; var streetViewCheck = new google.maps.StreetViewService(); streetViewCheck.getPanoramaByLocation(latlng, 50, function(result, status) { if (status == google.maps.StreetViewStatus.ZERO_RESULTS) { streetViewAvailable = 0; }else{ streetViewAvailable = 1; } }); alert(streetViewAvailable); //更多“loadMap”功能代码位于此 var streetViewAvailable; var streetViewCheck=新建google.maps.StreetViewService(); 街景检查。getPanoramaByLocation(latlng,50,功能(结果,状态){ if(status==google.maps.StreetViewStatus.ZERO\u结果){ 街景可用=0; }否则{ 街景可用=1; } }); 警报(街景可用);
试试这个-你真的忘记声明streetViewAvailable了这是任何AJAX调用的默认行为执行AJAX调用以查找数据。因为调用是异步的,所以您的其余代码会继续执行,并且在AJAX调用完成之前会执行警报。这就是为什么警报是空的。

嘿,谢谢你的提示,但我试过了,但没有成功。我设法将我们的主编码器从他的办公桌上拖了几分钟,然后他发现了原因,上面的代码只有在地图加载完成后才会运行,这就是为什么它在函数中不可用。但是再次感谢您的时间和努力!!!