我正在使用primefaces来管理gmap。 我在地图上显示一些标记,这些标记是使用用户传递的一些参数进行查询的结果。
当用户点击标记但我没有成功显示marker.data时,我想显示更多信息。
map.xhtml:
<p:gmap center="53.483959, -2.244644" zoom="7" type="HYBRID" style="width:100%;height:800px" model="#{poc_InputManager.mymap}" >
<p:ajax event="overlaySelect" listener="#{poc_InputManager.onMarkerSelect}" />
<p:gmapInfoWindow id="infoWindow">
<p:outputPanel style="text-align: center; display: block; margin: auto">
<h:outputText value="#{poc_InputManager.marker.data}" />
</p:outputPanel>
</p:gmapInfoWindow>
</p:gmap>
java代码:
public MapModel getMymap() throws Exception {
mymap=new DefaultMapModel();
ArrayList<POC_LocationsPostalCode> ad = lpcdao.getCodesFiltered(selectedsta);
for (int i = 0 ;i<ad.size();i++){
LatLng tmpcoord = new LatLng(ad.get(i).getLat(),ad.get(i).getLng());
Marker m = new Marker(tmpcoord, ad.get(i).getLocationcode());
m.setData("TEST");
mymap.addOverlay(m);
}
return mymap;
}
在此示例中,当用户单击标记时,它应显示“TEST”。 最终目标是使用标记的标题显示由查询检索的一些信息。
答案 0 :(得分:1)
你应该尝试这样的事情:
<p:gmap ... >
<p:ajax event="overlaySelect" listener="#{locationManager.onMarkerSelect}" />
<p:gmapInfoWindow id="infoWindow" >
<p:outputPanel style="text-align: left; display: block; margin: auto">
<p:outputLabel value="${locationManager.myMarker}" />
</p:outputPanel>
</p:gmapInfoWindow>
</p:gmap>
@ViewScoped
@Managedbean
public class LocationManager {
private String myMarker; //Your object
//Getter and Setters...
//your listener
public void onMarkerSelect(OverlaySelectEvent event) {
marker = (Marker) event.getOverlay();
myMarker = (String) marker.getData();
}
}