2012-04-09 7 views
0

Ich verwende WMS als Overlay-Karte. Ich möchte die Punktformdatei filtern, die in WMS ist. Derzeit wird nur der WMS-Code zur Anzeige verwendet. Dafür ist der Code.Wie Filterpunkte in 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); 

Dies ist Punktdatei. Ich möchte Parameter übergeben, um die anzuzeigenden Punkte einzuschränken (d. H. Punkt < 100). Bitte helfen Sie mir, wenn jemand weiß.

Antwort

4

Sie können Punkte in der WMS-Ebene einschränken, indem Sie einen Filter anfügen. Erstellen Sie zuerst einen Filter basierend auf einem Attribut in Ihrer Shape-Datei:

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

Das wird Filterobjekt erstellen. Sie müssen es in XML-Zeichenfolge analysieren. Folgenden Code wird die Arbeit machen:

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

Nun, da Sie einen String haben Sie es zu einem WMS-Layer anhängen können:

jpl_wms.params["FILTER"] = filterAsString; 

Wenn die Schicht bereits gezogen wird, werden Sie redraw() Methode do anrufen Um den Filter anzuwenden:

jpl_wms.redraw(); 
+0

Freund gibt kein Ergebnis. var Filter = new OpenLayers.Filter.Comparison ({ \t \t \t \t \t \t Typ: OpenLayers.Filter.Comparison.EQUAL_TO, \t \t \t \t \t \t Eigenschaft: "Typ", \t \t \t \t \t \t Wert: "Volt" }); \t \t \t var parser = neu 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(); ist dies schreiben – Pari

+0

Antwort funktioniert gut. Vielen Dank – Pari

Verwandte Themen