Google maps Primefaces GMap,如何在pointSelect事件后更新缩放
我有一个p:gmap组件。它从bean中获取缩放属性,并在点选择上添加一个标记 通常的用户交互如下所示:Google maps Primefaces GMap,如何在pointSelect事件后更新缩放,google-maps,jsf,primefaces,Google Maps,Jsf,Primefaces,我有一个p:gmap组件。它从bean中获取缩放属性,并在点选择上添加一个标记 通常的用户交互如下所示: 用户放大以找到所需的位置 用户点击地图 在单击的点上使用标记重新加载贴图 我唯一的问题是,在地图刷新之后,地图被缩小,因为缩放属性没有得到更新 p:gmap代码看起来像这样 <p:gmap binding="#{mapBean.gmap}" zoom="#{mapBean.zoom}" model="#{mapBean.poiMapModel}" wid
<p:gmap
binding="#{mapBean.gmap}"
zoom="#{mapBean.zoom}"
model="#{mapBean.poiMapModel}"
widgetVar="poiMap"
id="poiMapComponent"
>
<p:ajax event="pointSelect"
listener="#{mapBean.onPointSelect}"
update=":#{p:component('poiMapComponent')}"
/>
</p:gmap>
经过一些测试后,我确信MapBean.setZoom()永远不会被调用
如您所见,我甚至尝试将组件绑定回bean,以便获得p:gmap的当前缩放值。但PointSelect事件似乎总是重置zoom
值。我找不到任何方法来处理更改的缩放
似乎bean
和p:gmap
组件之间存在单向通信
我的问题是:有没有办法检测缩放变化并获得更新值?让
p:gmap
更新bean的zoom
属性p:gmap事件API有四个事件(用户指南4.0版2.2 p.214):
<p:ajax event="stateChange" listener="#{mapBean.onStateChange}"/>
public void onStateChange(StateChangeEvent event) {
zoom = event.getZoomLevel();
}
stateChange上的公共无效(StateChangeEvent事件){
zoom=event.getZoomLevel();
}
我知道状态改变,但我从不认为缩放更新是状态改变。谢谢你指出这一点。肯定比搞乱javascript要干净得多
<p:ajax event="stateChange" listener="#{mapBean.onStateChange}"/>
public void onStateChange(StateChangeEvent event) {
zoom = event.getZoomLevel();
}