Primefaces p:remoteCommand update清除谷歌地图监听器

时间:2015-01-06 15:33:02

标签: google-maps jsf google-maps-api-3 primefaces

每次缩放变化时,我都会在服务器端的地图上绘制一些多边形。这很好用!

我的问题是呼叫"更新"在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>

1 个答案:

答案 0 :(得分:1)

将您的remoteCommand更改为:

<p:remoteCommand name="myRemoteBoundsChange" actionListener="#{MB.drawPolygon}" 
    update="map" oncomplete="initialize()"/>

在执行远程命令并运行更新后再次添加它 并将<body>更改为<h:body>