1
我有一个p:gmap组件。它从一个bean zoom
属性,并增加了pointSelect
Primefaces GMap,如何在pointSelect事件后更新缩放事件
标记通常的用户交互是这样的:
- 用户放大,以找出他所期望的位置
- 用户点击地图
- 地图重新加载与她点击点标记权
我唯一的问题是,地图刷新后,地图被缩小,因为缩放属性不会得到更新
号码:GMAP代码看起来像这样
<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的相关代码:
public void onPointSelect(PointSelectEvent event) {
LatLng latlng = event.getLatLng();
int _zoom = this.getGmap().getZoom(); //This never gets changed
System.out.println("NEW ZOOM = " + _zoom);
//Creating a new Marker in the clicked area
selectedMarker = new Marker(latlng, "");
poiMapModel.addOverlay(selectedMarker);
}
public org.primefaces.component.gmap.GMap getGmap() {
return gmap;
}
public void setGmap(org.primefaces.component.gmap.GMap gmap) {
this.gmap = gmap;
}
经过一些测试后,我确定MapBean.setZoom()永远不会被调用。你可以看到,我甚至试着将组件绑定回bean,所以我可以得到p:gmap的当前缩放值。但似乎PointSelect事件总是重置zoom
值。我找不到处理变焦变焦的方法。
好像还有的bean
和p:gmap
部件之间的单向通信!
我的问题是:有没有办法检测缩放变化并获取更新值?有p:gmap
更新bean的属性zoom
缩放级别我知道* stateChange *,但我从来不考虑变焦更新的状态变化。感谢Thanx指出。绝对比用javascript搞乱更清洁 – yannicuLar