在primefaces gmap中显示标记数据

时间:2015-09-22 15:37:34

标签: google-maps jsf primefaces

我正在使用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”。 最终目标是使用标记的标题显示由查询检索的一些信息。

1 个答案:

答案 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();
  }
}