0

我使用 WMS 作为覆盖图。我想过滤 WMS 中的点 shapefile。目前仅使用 WMS Code 整体显示。以下是代码。

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

1 回答 1

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();
于 2012-04-09T16:57:43.900 回答