google-maps - Google Maps API v3 - 如何检测 map 何时更改为全屏模式?

标签 google-maps google-maps-api-3

有没有办法检测用户何时单击默认的全屏模式按钮?

这些是我正在使用的 map 选项:

var mapOptions = {
            center: {
                lat: 40.907192,
                lng: 20.036871
            },
            zoom: 2,
            fullscreenControl: true
        };

最佳答案

我不确定您是想检测实际的点击事件还是只检测全屏和非全屏之间的状态变化。我需要做后者。您需要知道的两件事是 a) 本地图大小发生变化时, map 将触发 bounds_changed 事件和 b) 在您的事件处理程序中,您需要将 map div 的大小与整个屏幕的大小。这样做:

google.maps.event.addListener( map, 'bounds_changed', onBoundsChanged );

function onBoundsChanged() {
    if ( $(map.getDiv()).children().eq(0).height() == window.innerHeight &&
         $(map.getDiv()).children().eq(0).width()  == window.innerWidth ) {
        console.log( 'FULL SCREEN' );
    }
    else {
        console.log ('NOT FULL SCREEN');
    }
}

请注意,getDiv() 返回您自己传递给 Map() 构造函数的 div。该 div 不会针对全屏调整大小 - 它的子元素会。因此,我获取 map div 的子项的那部分是正确的,但有点笨拙。您也可以像这样更简短地重写它,它会起作用,但如果 Google 更改 map div 的类名,这在未来可能会中断:

if ( $( '.gm-style' ).height() == window.innerHeight &&
     $( '.gm-style' ).width()  == window.innerWidth ) {

关于google-maps - Google Maps API v3 - 如何检测 map 何时更改为全屏模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53378482/

相关文章:

javascript - 如何使用 angular-google-maps <markers> 指令?

javascript - 谷歌地图多边形过多导致 iOS 崩溃

android - 如何让用户(即他的位置)在谷歌地图中移动,其中用户的更新位置是从 MySql 获取的?

ios - 减少 google maps sdk for ios 的大小

html - 如何从 Google Developers 教程向我的 Google map 添加图钉

ios - 如何在 iOS 中的 Google map 上保存位置

javascript - 如何制定适用于Google Maps的Google Api内容安全政策

android - 无法在 Android 谷歌地图中获取 addMarker 上的 fragment 搜索列表

javascript - Google Maps API v3.19 在 Internet Explorer Quirks 模式下损坏

android - 无法在Android中加载 map