2016-08-17 4 views
1

나는 인터넷 검색을 해왔고 어디서나이 문제에 대한 해결책을 찾을 수 없다. 지도가 전체 화면으로 표시되거나 전체 화면을 종료 할 때 감지 할 수 있습니까? (DOM 이벤트 onfullscreenchange와 거의 비슷합니다.)Google지도 - 변경 이벤트의 전체 화면?

"fullscreenControl"옵션을 true로 설정 한지도가 있습니다.지도가 전체 화면으로 표시 될 때 마커에지도의 중심을 맞추기 만하면됩니다. 정보창은지도가 전체 화면에있을 때만 나타납니다. 전체 화면 변경 사항을 확인하려면 어떻게합니까?

나는 전체지도에 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 스타일'이라는 클래스가 있음)와 높이를 비교하고 width를 윈도우의 innerHeight와 innerWidth로 설정하면 경계 만 조정됩니다. 플래그 변수와 결합하여 fitBounds를 한 번만 호출 할 수 있습니다. 이게 말이 돼? 이것으로 당신의 대답을 업데이트하고 싶습니까? –