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