2016-08-17 103 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一次。這有意義嗎?你想用這個更新你的答案嗎? –