Javascript 在改变窗口大小后,如何强制gmap重新绘制primefaces的内部中心布局?
我使用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"
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');
}