简体   繁体   中英

Openlayers: search from WFS layer

I'm using Geoserver/PostGIS/openLayers

I've successfully set a vector layer. And now I'm trying to create a search functionality. But something goes wrong.

This is my code

 <form> <input id="sub01" type="submit" value="Search" onclick="changeFilter()"> </form> <script type="text/javascript"> OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url="; var renderer = OpenLayers.Util.getParameters(window.location.href).renderer; renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers; var WGS84 = new OpenLayers.Projection("EPSG:4326"); var mercator = new OpenLayers.Projection("EPSG:900913"); var map = new OpenLayers.Map ("dMap", { controls:[ ], maxResolution: 0.005, displayProjection: WGS84, units: 'degrees' } ); var wfs = new OpenLayers.Layer.Vector("Editable Features", { renderers: renderer, displayInLayerSwitcher: true, strategies: [ new OpenLayers.Strategy.Fixed(), new OpenLayers.Strategy.Cluster({distance: 15}) ], styleMap: new OpenLayers.StyleMap(style), protocol: new OpenLayers.Protocol.WFS({ version: "1.1.0", url: "http://localhost:8080/geoserver/wfs", featureNS : "http://www.openplans.org/tour", srsName: "EPSG:4326", featureType: "tourism", geometryName: "the_geom" }), extractStyles: true, strategies: [new OpenLayers.Strategy.BBOX()], filter: new OpenLayers.Filter.Logical({ type: OpenLayers.Filter.Logical.AND, filters: [ new OpenLayers.Filter.Comparison({ type: OpenLayers.Filter. Comparison.EQUAL_TO, property: prop1, value: testfil }), new OpenLayers.Filter.Comparison({ type: OpenLayers.Filter. Comparison.EQUAL_TO, property: prop2, value: testfil2 }) ] }) }); var prop1 = "tourismtype"; var testfil = "Recreation"; var prop2 = "tourismname"; var testfil2 = "Park"; function changeFilter(prop1, prop2, testfil, testfil2){ wfs.destroyFeatures(); filter: new OpenLayers.Filter.Logical({ type: OpenLayers.Filter.Logical.AND, filters: [ new OpenLayers.Filter.Comparison({ type: OpenLayers.Filter.Comparison.EQUAL_TO, property: prop1, value: testfil }), new OpenLayers.Filter.Comparison({ type: OpenLayers.Filter.Comparison.EQUAL_TO, property: prop2, value: testfil2 }) ] }) wfs.filter = filter; wfs.refresh({force: true}); } </script> 

This is not work. I've tried editing my code, I don't know what to do, I've searched for an answer and nothing really helped me. Please advise...

Thanks.

My problem was solved, I put the input element with type submit out of the form element. It works. My initial code was:

  <form>
Other code
<input id="sub01" type="submit" value="Search" onclick="changeFilter()">
</form>

My Correction cod is:

 <form>
Other code
</form>
 <input id="sub01" type="submit" value="Search" onclick="changeFilter()">

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM