2015-01-06 55 views
1

每次縮放更改時,我都會在服務器端的地圖上繪製一些多邊形。這工作正常!Primefaces p:remoteCommand更新清除谷歌地圖監聽器

我的問題是,在第一次執行後,p:remoteCommand上的「update」調用正在銷燬我的監聽器「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

您remoteCommand更改爲:在執行後的遠程命令和更新具有

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

再次添加運行 並將<body>更改爲<h:body>

+0

您好!感謝您的回答。 事實上,我已經嘗試過這種方法,它沒有奏效。順便說一下..我決定通過客戶端繪製我的多邊形。 –