Javascript 谷歌地图Api街景事件可见\u更改

Javascript 谷歌地图Api街景事件可见\u更改,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我在使用visible_changed listener时遇到了一些问题,希望我能正确使用它 基本上,我想做的是,当你把佩格曼放在地图上时,寻找最近的标记,并将街景指向那里。我只希望每次加载街景时都发生这种情况,所以我想我可以用visible_changed listener捕捉到这种情况。问题是,这似乎也会在街景摄影机位置每次更改时触发,而不是仅在街景窗口每次可见时触发。我只是做错了吗?我是否应该捕获另一个侦听器事件 //街景事件 var thePanorama=map.getStreetV

我在使用visible_changed listener时遇到了一些问题,希望我能正确使用它

基本上,我想做的是,当你把佩格曼放在地图上时,寻找最近的标记,并将街景指向那里。我只希望每次加载街景时都发生这种情况,所以我想我可以用visible_changed listener捕捉到这种情况。问题是,这似乎也会在街景摄影机位置每次更改时触发,而不是仅在街景窗口每次可见时触发。我只是做错了吗?我是否应该捕获另一个侦听器事件

//街景事件
var thePanorama=map.getStreetView();
google.maps.event.addListener(panorama,'visible_changed',function(){
if(thePanorama.getVisible()){
//街景负荷
//放大标记,使其在街景中显示betetr

对于(var i=0;i如果您只需要第一个事件,请使用:

更改:

google.maps.event.addListener(thePanorama, 'visible_changed', function() {
致:

根据报告:

visible_changed会在街景的可见性发生变化时触发。请注意,在通过pano_changed指示的pano ID发生变化后,此事件可能会异步触发

但这并不能阻止您仅过滤打开和关闭事件。您可以保留街景的上一个可见性状态,并且仅当当前状态与上一个状态不同时才触发事件。接下来:

window.initMap=函数(){
map=new google.maps.map(document.getElementById('map'){
中心:{
lat:-34.397,
液化天然气:150.644
},
缩放:8
});
var isVisible=false;
google.maps.event.addListener(map.getStreetView(),'visible_changed',function()){
var visible=this.getVisible();
如果(可见!=可见){
警报(‘街景为’+(可见?‘打开’:‘关闭’);
}
isVisible=可见;
});
}
#地图{
身高:100%;
}
html,
身体{
身高:100%;
保证金:0;
填充:0;
}


好吧,我不只是想要第一个事件,我应该更清楚一点。我想在街景启动时捕捉每一次,这样每次我都可以将摄像头指向最近的标记。当地图第一次加载时,此代码只触发一次。请在您的问题中提供一个例子来说明这个问题。我认为我有一个相当完整的cod例如,这是我的整个侦听器功能…我列出了我期望它做什么,以及实际发生的事情。还有什么我应该添加的吗?发布的代码(当我添加缺少的内容时)提示“false”。不确定您是如何“测试”的你的.Ok-我编辑了我的答案,并提供了一个包含额外内容的示例-从我开始已经有一段时间了,所以几年前还没有内联的、可运行的代码。希望我的编辑更清晰,谢谢你的帮助。完美-我不知道为什么我没有考虑存储上一个状态。谢谢!
google.maps.event.addListenerOnce(thePanorama, 'visible_changed', function() {