每次缩放变化时,我都会在服务器端的地图上绘制一些多边形。这很好用!
我的问题是呼叫"更新"在p:remoteCommand正在摧毁我的听众" zoom_changed"第一次执行后。如果我删除"更新" ' zoom_change'监听器工作正常,但地图未更新,多边形永远不会出现(仅当我刷新页面时)。
我需要做些什么来使这两件事一起工作?
我正在使用primefaces 5.1
$(document).ready(function () {
google.maps.event.addDomListener(window, 'load', initialize);
});
function initialize()
{
google.maps.event.addListener(PF('map').getMap(), 'zoom_changed', function () {
var map = PF('map').getMap();
var center = map.getCenter();
var zoom = map.getZoom();
myRemoteBoundsChange([{name: 'zoom', value: zoom}, {name: 'center', value: center}]);
});
}
<body>
<p:remoteCommand name="myRemoteBoundsChange"
actionListener="#{MB.drawPolygon}" update="map"/>
<div id="divmap">
<p:gmap id="map" model="#{MB.mapa}" center="#{MB.centroMapa}" zoom="#{MB.zoom}"
fitBounds="false" type="ROADMAP" widgetVar="map" />
</div>
</body>
答案 0 :(得分:1)
将您的remoteCommand更改为:
<p:remoteCommand name="myRemoteBoundsChange" actionListener="#{MB.drawPolygon}"
update="map" oncomplete="initialize()"/>
在执行远程命令并运行更新后再次添加它
并将<body>
更改为<h:body>