过滤器如何指向WMS?

时间:2012-04-09 09:31:25

标签: openlayers

我使用WMS作为叠加图。我想过滤WMS中的point shapefile。目前仅使用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)。 如果有人知道,请帮帮我。

1 个答案:

答案 0 :(得分: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();