Dear users, > > I try to set a WFS-filter dynamically.
I found a solution now. If I get e.g a list of comma-separated objekt_ids (4,20,56,.....) that shall be filtered in the wfs I do: suchobjekte = new String(suchobjekte); y=suchobjekte.split(","); var filter_body; var filter_header = '<'+'?xml version="1.0" encoding="ISO-8859-1"?><wfs:GetFeature xmlns:ogc="http://www.opengis.net/ogc"xmlns:gml="http://www.opengis.net/gml"xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.0.0"maxFeatures="5" outputFormat="GML2"><wfs:Query srsName="epsg:4326" typeName="gastronomie_ows">'; var filter_footer = '</wfs:Query></wfs:GetFeature>'; var filter_1_1 = new OpenLayers.Format.Filter({version: "1.1.0"}); var xml = new OpenLayers.Format.XML(); var wfs_url = "http://www.xyz.de/cgi-bin/mapserv?map=/............./ows.map"; if(y.length > 1) { filter_body_1='<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"><ogc:Or>'; filter_body_2=""; filter_body_3='</ogc:Or></ogc:Filter>'; for(var i=0;i< y.length;i++){ alert (y[i]); filter_body_2= filter_body_2 +'<ogc:PropertyIsEqualTo matchCase="true"><ogc:PropertyName>objekt_id</ogc:PropertyName><ogc:Literal>'+y[i]+'</ogc:Literal></ogc:PropertyIsEqualTo>'; } filter_body=filter_body_1 + filter_body_2 + filter_body_3; } else { var filter_body = new OpenLayers.Filter.Comparison({ type: OpenLayers.Filter.Comparison.EQUAL_TO, property: "objekt_id", value: y[0] }); filter_body = xml.write(filter_1_1.write(filter_body)); } var final_filter = filter_header+filter_body+filter_footer; req = new OpenLayers.Request.POST({ method: "POST", url: wfs_url, data: final_filter, callback: do_what_i_want }); ....with that it works. -- GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT! Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01 _______________________________________________ Users mailing list Users@openlayers.org http://openlayers.org/mailman/listinfo/users