2012-04-09 9 views
0

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

WMSレイヤでポイントを制限するには、フィルタを追加します。まず、シェイプファイル内のいくつかの属性に基づいてフィルタを作成します。

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

これでフィルタオブジェクトが作成されます。 XML文字列に解析する必要があります。今、あなたがあなたのWMSレイヤにそれを添付することができます文字列があること

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); 

:層がすでにredraw()メソッドを呼び出してやる必要があります描かれている場合

jpl_wms.params["FILTER"] = filterAsString; 

を次のコードは、仕事をしますフィルタを適用するために:

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

+0

回答はうまくいきます。ありがとう – Pari

関連する問題