Javascript 在改变窗口大小后,如何强制gmap重新绘制primefaces的内部中心布局?

Javascript 在改变窗口大小后,如何强制gmap重新绘制primefaces的内部中心布局?,javascript,google-maps,google-maps-api-3,primefaces,Javascript,Google Maps,Google Maps Api 3,Primefaces,我使用primefaces布局来显示网页。地图位于中心布局中 here<p:layoutUnit position="center" resizable="false" closable="false" collapsible="false" collapsed="false" styleClass="ui-layout-center" > <script src="http://maps.google.com/maps/api/js?sensor=true|false"

我使用primefaces布局来显示网页。地图位于中心布局中

 here<p:layoutUnit position="center" resizable="false" closable="false" collapsible="false" collapsed="false" styleClass="ui-layout-center" >

<script src="http://maps.google.com/maps/api/js?sensor=true|false"
    type="text/javascript"/>


<h:form>
    <p:growl id="messages" showDetail="true" life="4000" />
    <p:gmap id ="map" center="#{mapBean.latCenter}, #{mapBean.lonCenter}" zoom="#{mapBean.zoomLevel}" type="ROADMAP"
        style="position:absolute;width:100%;height:100%" model="#{mapBean.model}"  widgetVar="gmap">
        <p:ajax event="stateChange" listener="#{mapBean.onStateChange}"
            update="messages, map" fixBounds="false"/>
    </p:gmap>
但是当我改变窗口的大小时,贴图会部分显示。如果我将浏览器的窗口变大,则显示的地图的大小与前一个小窗口的大小相同。仅当我移动地图时才有帮助。移动地图后,地图将正确重画。我试着用

google.maps.event.trigger(gmap, "resize");
但这没用。结果如下


如何使用javaScript和Primefaces解决这个问题?

我已经解决了我的问题

1) 我已使用Inspect元素选项检查了页面 2) 形式在div中转换的原因 3) 在google API上,我找到了getDiv() 4) div的更新样式 5) 下一个代码正在运行

window.onresize = function(event) {

        var map = PF('gmapV').getMap();
        var MyDiv = map.getDiv();
        var height = $(window).height() - 50 - 100;
        var width = $(window).width() - 300 - 200;
        MyDiv.style.width = width.toString().concat("px");
        MyDiv.style.height = height.toString().concat("px");
        google.maps.event.trigger(map, 'resize');

    }

使用搜索引擎:这个解决方案对我不起作用。我复制了代码函数callMap(){var gmap=PF('gmap').getMap();resize#map();google.maps.event.trigger(gmap,“resize”);}函数resize#map(){var iWidth=$(window.width();var iHeight=$(window.height();$(“#map”).height(iHeight-50-100)$(“#map”).width(iWidth-300-200);}$(window.ready(函数(){resize#map();});$(窗口).resize(函数(){resize_map();});
window.onresize = function(event) {

        var map = PF('gmapV').getMap();
        var MyDiv = map.getDiv();
        var height = $(window).height() - 50 - 100;
        var width = $(window).width() - 300 - 200;
        MyDiv.style.width = width.toString().concat("px");
        MyDiv.style.height = height.toString().concat("px");
        google.maps.event.trigger(map, 'resize');

    }