0

オーバーレイマップとしてWMSを使用しています。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

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 に答える