当我使用Openlayers 2时,我可以编写各种过滤器,如OpenLayers.Filter.Comparison.EQUAL_TO
或OpenLayers.Filter.Comparison.LIKE
,然后使用WFS协议和回调函数根据用户输入和那些本机WFS过滤器获取功能。 / p>
在Openlayers 3 WFS中,我没有看到那些原生过滤器。
那么,现在,我如何根据用户输入获取功能?我得到输入并对PostGIS进行老式查询?我重置了ol.Vector
来源url
?
请提供一些帮助或一些教程
由于
答案 0 :(得分:0)
您应该更改OpenLayers 3中的url
以使用OGC FE(过滤器编码)语法。
实际上,OpenLayers.Filter.Comparison.EQUAL_TO
或OpenLayers.Filter.Comparison.LIKE
正在为您构建场景后面的过滤器字符串。
如果您查看the OpenLayers official WFS demo,就会看到他们在网址中使用了bbox
个密钥。要与OpenLayers.Filter.Comparison.EQUAL_TO
执行相同操作,您可以将网址替换为:
return 'http://demo.boundlessgeo.com/geoserver/wfs?service=WFS&' +
'version=1.1.0&request=GetFeature&typename=osm:water_areas&' +
'outputFormat=application/json&srsname=EPSG:3857&' +
'Filter=<Filter xmlns:gml="http://www.opengis.net/gml"><And><BBOX><PropertyName>way</PropertyName><gml:Box srsName="urn:x-ogc:def:crs:EPSG:3857"><gml:coord><gml:X>' + extent[0] + '</gml:X> <gml:Y>' + extent[1] + '</gml:Y></gml:coord><gml:coord><gml:X>' + extent[2] + '</gml:X><gml:Y>' + extent[3] + '</gml:Y></gml:coord></gml:Box></BBOX><PropertyIsEqualTo><PropertyName>landuse</PropertyName><Literal>basin</Literal></PropertyIsEqualTo></And></Filter>';
重要的部分是&filter=...
将过滤器编码(FE)语法应用于您的WFS调用。