2016-08-17 2 views
1

Я гулял по всему миру, и я не могу найти решение этой проблемы в любом месте. Нужно ли когда-либо обнаруживать, когда карта выходит в полноэкранный режим или выходит во весь экран? (очень похоже на событие DOM onfullscreenchange)Карты Google - полный экран события изменения?

У меня есть карта с параметром «fullscreenControl», установленным в true, и все, что я хочу сделать, - это центрирование карты на маркерах, когда карта переходит в полноэкранный режим, а также отображение infowindow ТОЛЬКО, когда карта находится в полноэкранном режиме. Как я могу проверить полноэкранные изменения?

Я попытался с помощью событий DOM на всей карте, но это не похоже на работу, что-то вроде:

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

Я также думал, что я могу сделать пользовательский элемент управления, вместо кнопка 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 
    } 
} 

Но я думаю, что вы можете удалить updateMapBounds, если вы используете google.maps.event.addListener (map.'idle», updateBounds());

+0

Хмм Мне не нужно вызывать изменение размера на карте, потому что карта является глобально доступной переменной, но я понимаю, почему вы предложили вызвать изменение размера (таким образом я могу захватить его и сделать то, что хочу). Об обнаружении полноэкранного режима, как мне сделать проверку ширины/высоты? Работает ли «измененный» слушатель на карте-холсте? –

+0

Да, это было бы, вы бы сравнили его с высотой и шириной, чтобы увидеть, полно ли он. – telhar

+0

Итак, я тестировал его немного дальше, и, по-видимому, нет простого способа проверить изменения на карте, потому что он не ведет себя как обычные элементы DOM. Итак, что я делаю, это добавить слушателя на карте, когда центр изменится, а затем использовать JQuery для сравнения div, который добавляет Карты Google, чтобы сделать карту (она всегда имеет класс под названием «gm-style»), высоту и ширину с внутренним высоту окна и внутреннюю ширину окна, только тогда я отрегулирую границы. Это в сочетании с переменной флагом позволяет мне звонить fitBounds только один раз. Имеет ли это смысл? Вы хотите изменить свой ответ? –