2016-08-17 102 views
1

我一直在搜索,我找不到任何地方的这个问题的解决方案。无论如何检测地图何时全屏显示或全屏退出? (非常像DOM事件onfullscreenchange)谷歌地图 - 全屏变化事件?

我有一个地图选项“fullscreenControl”设置为true,我想要做的就是当地图变为全屏时在地图上标记地图,以及显示infowindow只有在地图处于全屏状态时才会显示。我如何检查全屏变更?

我用了整个地图上的DOM事件尝试,但似乎并没有工作,是这样的:

google.maps.event.addDomListener(document.getElementById("map-canvas"), "fullscreen", function() { 
      console.log("FULLSCREEN CHANGED"); 
     }); 

我还以为我可以做一个自定义控制,代替作为fullscreenControl的X按钮,可在地图变为全屏时切换,然后我可以侦听该自定义控件上的单击事件,但是没有更好的方法吗?是否真的没有onfullscreenchange事件或类似的事情?

感谢您的帮助!

回答

1

我更新的答案,包括使用计时器上center_change

google.maps.event.addListener(map,'center_change', updateMapBounds); 
} 
function updateMapBounds(){ 
    clearTimeout(mapBoundsTimer); 
    mapBoundsTimer = setTimeout(function() { 
     updateBounds(); 
    }, 500); 
} 
function updateBounds(){ 
    //code to get map_div or gm_style class size and compare it to the 
    if($('.gm_style').height()===window.innnerHeight && 
     $('.gm_style).width() === window.innerWidth){ 
     //fit_markers 
    } 
} 

检查,但我认为,如果你使用google.maps.event.addListener(map.'idle你可以删除updateMapBounds”, updateBounds());

+0

嗡嗡声我不需要在地图上触发调整大小,因为地图是一个全局可访问的变量,但我明白你为什么建议触发调整大小(这样我可以捕捉它并做我想做的事)。关于检测全屏,我如何进行宽度/高度检查?在地图画布上做“更改”侦听器吗? –

+0

是的,你会然后将它与高度和宽度进行比较,看它是否是全尺寸。 – telhar

+0

好吧,我进一步测试了一下,显然没有简单的方法来检查地图上的更改,因为它不像普通的DOM元素那样工作。所以我最终做的是在地图上添加一个侦听器,以便中心更改时间,然后使用JQuery比较Google地图为地图添加的div(它始终有一个名为“gm-style”的类)高度和宽度与窗口的innerHeight和innerWidth,然后才调整边界。这与一个标记变量结合使用,我只能调用fitBounds一次。这有意义吗?你想用这个更新你的答案吗? –