过滤Openlayers 3中的功能

时间:2015-10-31 23:02:18

标签: openlayers openlayers-3

当我使用Openlayers 2时,我可以编写各种过滤器,如OpenLayers.Filter.Comparison.EQUAL_TOOpenLayers.Filter.Comparison.LIKE,然后使用WFS协议和回调函数根据用户输入和那些本机WFS过滤器获取功能。 / p>

在Openlayers 3 WFS中,我没有看到那些原生过滤器。

那么,现在,我如何根据用户输入获取功能?我得到输入并对PostGIS进行老式查询?我重置了ol.Vector来源url

请提供一些帮助或一些教程

由于

1 个答案:

答案 0 :(得分:0)

您应该更改OpenLayers 3中的url以使用OGC FE(过滤器编码)语法。 实际上,OpenLayers.Filter.Comparison.EQUAL_TOOpenLayers.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调用。