primefaces gmap搜索中心

vijayakumar gopalakrishnan

当我搜索地点时,地图会更新。但是居中值不会更新,任何帮助都会很棒。

/ * xhtml在下面给出* /

<h:outputLabel value="Search Location :" for="acSimple" />
<p:autoComplete id="acSimple" minQueryLength="0" value="#{sampleMapProducer.searchString}" forceSelection="true" completeMethod="#{sampleMapProducer.complete}">
    <p:ajax event="itemSelect" update="gmap_loc" process="#{sampleMapProducer.searchCenter}" />
    <p:ajax process="@this" update="gmap_loc" />
</p:autoComplete>
<p:outputPanel id="gmapPanel" autoUpdate="true">
    <p:gmap center="#{sampleMapProducer.searchCenter}" zoom="6" type="ROADMAP" style="width:100%;height:600px" model="#{sampleMapProducer.mapBySearch}" id="gmap_loc"></p:gmap>
</p:outputPanel>

地图的Bean代码:

private void clearMap (MapModel map)
{
    for (Marker marker : map.getMarkers()) {
        marker.setVisible(false);
    }
}

/ *获取要搜索的地图* /

 public MapModel getMapBySearch () 
 {
    clearMap(mapBySearch);
    for (Marker markerIterator : markersList)
    {
        if (searchString == null || searchString.trim().equals(""))
        {
            mapBySearch.addOverlay(markerForLocation(markerIterator,BLUE_DOT));
        }
        else
        {
          if (markerIterator.getTitle().toLowerCase().contains(searchString.toLowerCase()))
            {
                mapBySearch.addOverlay(markerForLocation(markerIterator,BLUE_DOT));
            }
        }
    }
    return mapBySearch;
}

/ *自动完成字符串* /

public List<String> complete ( String searchString) 
{
    List<String> suggestedStrings = new ArrayList<String>();
    for (String locationName : LOCATION_NAMES)
    {
        if (locationName.toLowerCase().contains(searchString.toLowerCase())) {
            suggestedStrings.add(locationName);
        }
    }
    this.searchString = searchString;
    return suggestedStrings;
}

/ *获取定位中心* /

public String getLocationCenter () 
{ 
    String center = "39,-98"; 
    for (LocationGeocodeBean geoCode : GEO_CODES) 
    { 
        if (geoCode.getId().equals(selectedLocationId())) 
        { 
            if ((geoCode.getLatitude() != 0) && (geoCode.getLongitude() != 0)) 
            { 
                center = String.format("%s,%s", geoCode.getLatitude(),geoCode.getLongitude()); } 
                return center; 
            } 
        } 

    }
    return center; 
}       
Tankhenk

好吧,我不完全理解您的代码,因此我创建了一个简单的示例。它将一些标记放置在地图上,当您单击地图时,地图将居中到标记。您可以使用回调参数。因此,当您单击或选择表单中的某些内容时,您会发回一个参数,并使用JavaScript捕获该参数,然后更新您的地图。请尝试以下示例:

豆角,扁豆:

public class MapBean
{
    private MapModel advancedModel;

    public MapBean()
    {   
    advancedModel = new DefaultMapModel();

    LatLng coord1 = new LatLng(36.883707, 30.689216);
    LatLng coord2 = new LatLng(36.879703, 30.706707);
    LatLng coord3 = new LatLng(36.885233, 30.702323);

    advancedModel.addOverlay(new Marker(coord1));
    advancedModel.addOverlay(new Marker(coord2));
    advancedModel.addOverlay(new Marker(coord3));

    }

    public MapModel getAdvancedModel()
    {

    return advancedModel;
    }

    public void onMarkerSelect(OverlaySelectEvent event)
    {   
    Marker marker = (Marker) event.getOverlay();
    RequestContext context = RequestContext.getCurrentInstance();        
        context.addCallbackParam("lat", marker.getLatlng().getLat()); 
        context.addCallbackParam("lng", marker.getLatlng().getLng());        
    }

}

和.xhtml

<h:form id="form">
    <p:gmap center="36.890257,30.707417" zoom="13" type="HYBRID" model="#{mapBean.advancedModel}" style="width:600px;height:400px" id="maps" widgetVar="map" onPointClick="pointClick(event)">
        <p:ajax event="overlaySelect" listener="#{mapBean.onMarkerSelect}" oncomplete="handleComplete(xhr, status, args)"/>
    </p:gmap>
    <script type="text/javascript">  
        function handleComplete(xhr, status, args) 
        {  
            //Create center point from callback params
            var latlng = new google.maps.LatLng(args.lat , args.lng);
            //Get de google map from your widget now you can use the googlemap api
            var gmap = map.getMap();
            gmap.setCenter(latlng);                   
        }   
    </script>  
</h:form>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

以Primefaces gmap中的当前位置为中心

来自分类Dev

primefaces 5.0 gmap小部件错误

来自分类Dev

PrimeFaces GMap忽略模型标签,不显示标记

来自分类Dev

PrimeFaces GMap-绘制多个多边形

来自分类Dev

Primefaces GMap,pointSelect事件后如何更新缩放

来自分类Dev

Gmap Primefaces 地理编码自定义错误消息

来自分类Dev

Primefaces Datatable列过滤中的通配符搜索?

来自分类Dev

Primefaces Datatable列过滤中的通配符搜索?

来自分类Dev

Primefaces DataTable标头搜索框中断了表格布局

来自分类Dev

primefaces GMap示例不起作用,也不知道为什么

来自分类Dev

Primefaces推

来自分类Dev

淡出Primefaces

来自分类Dev

PrimeFaces SelectOneRadio

来自分类Dev

Primefaces ViewScoped

来自分类Dev

Primefaces推

来自分类Dev

如何删除GMap中心位置显示的加号(+)?

来自分类Dev

如何删除GMap中心位置显示的加号(+)?

来自分类Dev

SharePoint搜索中心的搜索导航

来自分类Dev

CSS的中心搜索栏

来自分类Dev

gmap.net中多边形的中心

来自分类Dev

PrimeFaces分页器选择

来自分类Dev

在Wildfly上的Primefaces Fileupload

来自分类Dev

Primefaces DefaultStreamedContent InputStream

来自分类Dev

Primefaces扩展警告

来自分类Dev

PrimeFaces计划日期错误

来自分类Dev

Primefaces:GraphicImage不刷新

来自分类Dev

Primefaces性能问题

来自分类Dev

PrimeFaces inputText启用/禁用

来自分类Dev

primefaces dataTable样式?