Google Maps API v2를 사용하고 있습니다. 마커를지도에 추가 한 다음 해당 마커에 맞게 확대/축소합니다. 지도가 보이면 잘 작동합니다. 그러나 그렇지 않은 경우 - 예를 들어 탭 스트립이 있고 페이지가로드 될 때지도의 탭이 선택되지 않은 경우 -지도를 표시 할 때 줌 레벨과 중심이 잘못되었습니다.Google지도 -지도가 보이지 않을 때 마커에 맞게 확대/축소가 작동하지 않습니다.
다음은 간단한 테스트 케이스 (jQuery를 사용)의 :이 그대로 잘 작동
<script type="text/javascript">
var scale = Math.random() * 20;
$(document).ready(function() {
var $container = $('#container');
// $container.hide();
var map = new GMap2($('#map')[0]);
$container.show();
var markerBounds = new GLatLngBounds();
for (var i = 0; i < 10; i++) {
var randomPoint = new GLatLng(38.935394 + (Math.random() - 0.5) * scale, -77.061382 + (Math.random() - 0.5) * scale);
map.addOverlay(new GMarker(randomPoint));
markerBounds.extend(randomPoint);
}
map.setCenter(markerBounds.getCenter(), map.getBoundsZoomLevel(markerBounds));
});
</script>
<div id="container">
<div id="map" style="margin: 100px; width: 450px; height: 300px;"></div>
</div>
,하지만 당신은 $container.hide()
주석이 있다면 모두 밖으로 구타.
보이지 않는 div에서 Google Maps API를 제대로 작동시키는 방법이 있습니까?
'getBounds'이 (getBoundsZoomLevel에서 호출)지도의 가시 영역을 반환, 그래서 나는 가정 것 탭 스트립의 클릭 이벤트에 맞게 확대/축소해야합니다. v3의 메서드 요약은 v2의 설명보다 좋습니다 : v3 "현재 뷰포트의 위도/경도 경계를 반환합니다.지도가 아직 초기화되지 않았거나 (즉, mapType이 여전히 null 인 경우) 또는 가운데 및 확대/축소가없는 경우 설정된 경우 결과는 null입니다. " 나는 getBounds가 버전들 사이에서 많이 바뀌 었다고 생각하지 않는다. –