请问我可以从以下问题中获得一些帮助。我想在传单中创建一个CQL过滤器,它过滤来自GeoServer的数据,数据托管在PostGIS数据库中。
例如,从数据库中的NAME字段中选择一个库名。过滤器将是可变的,因为用户可以通过输入对话框字段输入不同的名称。
我将我的图层显示为WMS,虽然我能够在openlayers 3中使用交互式过滤器,但我仍然不喜欢传单。
我是GIS的Web开发方面的新手,我们将非常感谢任何有关正确方向的帮助或指示。
亲切的问候, 卡梅伦
答案 0 :(得分:1)
在传单中,您可以使用TileLayer.WMS在地图上绘制wms图层。像这样:
var nexrad = L.tileLayer.wms("http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi", {
layers: 'nexrad-n0r-900913',
format: 'image/png',
transparent: true,
attribution: "Weather data © 2012 IEM Nexrad"
});
你会看到一些标准的传单WMS选项,如格式,版本..crs等。
但是传单在url中发送所有额外的参数/选项以支持non-standard WMS parameter。 CQL_FILTER就是其中之一,所以你需要做的是提供cql_filter选项(列名区分大小写):
var nexrad = L.tileLayer.wms("http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi", {
layers: 'nexrad-n0r-900913',
format: 'image/png',
transparent: true,
cql_filter: 'NAME=filterhere'
attribution: "Weather data © 2012 IEM Nexrad"
});
答案 1 :(得分:0)
这是我第一次在论坛上发帖,已经得到了很多帮助!
我设法按照我的代码中的建议获取cql_filter,如下所示:
var contours = L.tileLayer.wms('http://gis01-dbn:8080/geoserver/Inyaninga_243-198/wms', {
layers: 'Inyaninga_243-198:contours_3857',
format: 'image/png',
transparent: true,
cql_filter: 'elevation= 126',
});
是否有任何方法可以使此高程参数接收用户输入和更新?
我在html中创建了一个表单:
<form>
Elevation(m):<br>
<input type="text" id="myInput">
<input type="button" value="Elevation">
</form>
但是,我很难将“myInput”传递给cql_filter以接受用户可以输入的值。
我尝试创建一个容纳cql_filter的函数,但在加载WMS时再次无法将其调用到cql_filter选项中。