Javascript Google Map V3在隐藏分区中偏离中心

Javascript Google Map V3在隐藏分区中偏离中心,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我在div中有一个谷歌地图,默认情况下需要隐藏它 <div id="newpost" style="display:none;"> 取消隐藏贴图时,贴图的一部分不会渲染。我猜我必须在提交时重新加载地图。有人知道怎么做吗 谢谢 这是我的密码: <script type="text/javascript"> jQuery(document).ready(function(){ jQuery('#newcatchhide').live('click', fu

我在div中有一个谷歌地图,默认情况下需要隐藏它

<div id="newpost" style="display:none;">

取消隐藏贴图时,贴图的一部分不会渲染。我猜我必须在提交时重新加载地图。有人知道怎么做吗

谢谢

这是我的密码:

   <script type="text/javascript">
jQuery(document).ready(function(){
    jQuery('#newcatchhide').live('click', function(event) {        
         jQuery('#newpost').toggle('show');
    });
});

jQuery(文档).ready(函数(){
jQuery('#newcatchhide').live('click',函数(事件){
jQuery('#newpost')。切换('show');
});
});
这是body标签上的map oad函数:

<body onload="load()" onunload="GUnload()">

以下是切换的div和包含映射的div:

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

像这样的东西
其思想是在显示DIV之后初始化映射

编辑:
根据您的更新确定替换:

jQuery('#newcatchhide').live('click', function(event) {        
         jQuery('#newpost').toggle('show');
    });
与:


然后从body标签中删除
onload=“load()”

我最近也遇到了同样的问题,并且发现解决方法非常简单:

google.maps.event.trigger(map, 'resize');
其中
map
是您的谷歌地图实例

您可以在使div可见后调用此函数

如果对映射使用jQuery,则可以使用

map = $('#map_canvas').gmap().map;
更好:

gmap.redraw = function() {
    gmOnLoad = true;
    if(gmOnLoad) {
        google.maps.event.trigger(gmap, "resize");
        gmap.setCenter(gmlatlng);
        gmOnLoad = false;
    }
}
在show click事件中:

$("#goo").click(function() {
  if ($("#map_canvas").css("display") == "none") {
    $("#YMapsID").toggle();
    $("#map_canvas").toggle();
    if (gmap != undefined) {
        gmap.redraw();
    }
  }
});

是的,看起来不错。但是我很困惑-映射是在body标记上初始化的:我会关闭body标记并在div内再次打开它吗?你说在div内打开body标记是什么意思?头牌后面应该只有一个身体标签,里面有你所有的div?您使用什么JS位来显示DIV?在那里调用该函数。我在div上使用jQuery切换。您是说调用onload=“load()”?jQuery(document).ready(函数(){jQuery('newcatchhide').live('click',函数(event){jQuery('newpost').toggle('show');});我猜你的意思是
jQuery('#newpost')。toggle('slow'),是否还要在稍后阶段隐藏DIV?这就是您使用切换的原因吗?您可以做的是设置一个全局变量标志
var onLoad=truejQuery('#newpost').toggle('slow',function(){if(onLoad){load();onLoad=false;}})
并从body标记中删除
onload=“load()”
,这样初始化将只调用oncebriliant,谢谢。其他建议对我都不管用。这一个很有用!你好,Jani,我可以在切换按钮上调用此选项吗?谢谢当你把地图显示出来后,你会称之为“地图”,这是正确的方法。不过,之后可能需要将地图居中。。
$("#goo").click(function() {
  if ($("#map_canvas").css("display") == "none") {
    $("#YMapsID").toggle();
    $("#map_canvas").toggle();
    if (gmap != undefined) {
        gmap.redraw();
    }
  }
});