2

我试图通过在display:none;和之间切换来隐藏/显示谷歌地图display:inherit;。当我申请display:inherit谷歌地图时,地图的一部分被裁剪了,我不确定为什么。在使用的同时如何解决这个问题display:none;

链接到示例

//HTML
<button id="toggleMap">Toggle Google Map</button>
<button id="toggleImage">Toggle Image</button>

<div id="image">
  <img src="http://jdm-digital.com/wp-content/uploads/2012/04/google-jquery-opt-465x346.jpg">
</div>

<div id="map" style="width:500px; height:500px; display:none;">
  <div id="map_canvas" style="height:100%;"></div>
</div>


//JavaScript
$('#toggleImage').click(function() {
  $('#image').css('display', 'inherit');
  $('#map').css('display', 'none');
});

$('#toggleMap').click(function() {
  $('#image').css('display', 'none');
  $('#map').css('display', 'inherit');
});
4

3 回答 3

5

如果您在隐藏地图时创建地图,API 不知道它应该有多大,因为浏览器报告它的大小为零。API 只为零大小的地图加载足够的图块,并将中心定位在 (0,0) - 左上角。

当您取消隐藏地图时,通过触发 resize 事件告诉 API 获取新尺寸:

google.maps.event.trigger(map,'resize')

文档— 向下滚动到事件。

于 2012-05-15T18:27:21.910 回答
0

如果我理解正确,你可以给display:block而不是display:inherit

于 2012-05-15T16:19:16.223 回答
0

我的解决方案是在点击$('#map').append(mapHTML);时使用#toggleMap。这种方式允许在#map可见时创建地图。

我觉得这种方法有点骇人听闻。如果有人有替代解决方案,我肯定想知道它。

//HTML
<div id="map" style="width:500px; height:500px; display:none;"></div>


//JavaScript
$('#toggleMap').click(function() {
  $('#image').css('display', 'none');
  $('#map').css('display', 'inherit');

  var mapHTML = "<div id=\"map_canvas\" style=\"height:100%;\"></div>";
  $('#map').append(mapHTML);
  googleMap();  //Google Map's initialize() that would create the map
});
于 2012-05-15T18:20:51.690 回答