2012-04-09 50 views
0

我正在使用WMS作爲覆蓋圖。我想過濾WMS中的點shapefile。目前僅使用WMS代碼來顯示整體。代碼如下。WMS中的過濾點如何?

var jpl_wms = new OpenLayers.Layer.WMS("Administrative Layer", 
       "http://localhost:8080/geoserver/test/wms", 
       {layers: "maharashtra_administrative",transparent: true},{isBaseLayer:false}); 
       map.addLayer(jpl_wms); 

這是點文件。我想通過參數來限制要顯示的點(即點< 100)。 如果有人知道,請幫助我。

回答

4

您可以通過附加過濾器來限制WMS圖層中的點。首先根據形狀文件中的某些屬性創建過濾器:

var filter = new OpenLayers.Filter.Comparison({ 
    type: OpenLayers.Filter.Comparison.EQUAL_TO, 
    property: "id", 
    value: 5 
}); 

這將創建過濾器對象。您需要將其解析爲XML字符串。下面的代碼將做的工作:

var parser = new OpenLayers.Format.Filter.v1_1_0(); 
var filterAsXml = parser.write(filter); 
var xml = new OpenLayers.Format.XML(); 
var filterAsString = xml.write(filterAsXml); 

現在,你有,你可以將其連接到WMS層的字符串:

jpl_wms.params["FILTER"] = filterAsString; 

如果該層已經繪製你必須做電redraw()方法爲了應用過濾器:

jpl_wms.redraw(); 
+0

沒有結果的朋友。 VAR =濾波器新OpenLayers.Filter.Comparison({ \t \t \t \t \t \t類型:OpenLayers.Filter.Comparison.EQUAL_TO, \t \t \t \t \t \t屬性: 「類型」, \t \t \t \t \t \t值: 「voltn」 }); \t \t \t var parser = new OpenLayers.Format.Filter.v1_1_0(); \t \t \t var filterAsXml = parser.write(filter); \t \t var xml = new OpenLayers.Format.XML(); \t \t var filterAsString = xml.write(filterAsXml); \t \t mah2.params [「FILTER」] = filterAsString; mah2.redraw();這是寫 – Pari 2012-04-10 12:12:31

+0

答案工作正常。謝謝 – Pari 2012-11-06 12:58:05