OpenLayers 3:刷新单层源

OpenLayers 3: Refresh single Layer Source

我正在尝试刷新单个 WMS 图层源。目标是使用具有不同阈值的参数化 SLD。根据这些值绘制不同大小和颜色的点。

var source = new ol.source.TileWMS({
                url: 'http://localhost:8080/geoserver/Global/wms',
                params: {
                    LAYERS: 'cities',
                    VERSION: '1.3.0',
                    CQL_FILTER: "ISO_A2 IN ('DE', 'FR', 'BE', 'PT', 'CZ', 'NL', 'ES', 'AT', 'CH', 'HU', 'PL', 'SE', 'NO', 'DK', 'IT', 'GB', 'IE')",
                    STYLES: 'ring_dynamic',
                    ENV: 'LOW_MAX:' + low_max + ';MED_MAX:' + med_max
                }
            })

设置 low_max 和 med_max 参数后,应重新加载图层以使更改可见。

我已经尝试了以下两个语句,但 none 行得通。

source.changed();

source.dispatchEvent('change');

使用 OpenLayers 3.6 和 3.6。

€编辑: 我使用 jQueryUI-Slider 来触发重新加载:

$(function() {
            $( "#slider-range" ).slider({
              range: true,
              min: 0,
              max: 5000000,
              values: [ 500000, 2000000 ],
              slide: function( event, ui ) {
                $( "#grenzen" ).val( ui.values[ 0 ] + " - " + ui.values[ 1 ] );
                low_max = ui.values[0];
                med_max = ui.values[1];
                source.changed();
                source.dispatchEvent('change');
              }
            });
            $( "#range_limits" ).val( $( "#slider-range" ).slider( "values", 0 ) +
              " - " + $( "#slider-range" ).slider( "values", 1 ) );
          });

此代码位于之前显示的代码下方。

在源上使用 updateParams http://openlayers.org/en/v3.7.0/apidoc/ol.source.TileWMS.html#updateParams

我用的是openlayers v4.6.5 就这样解决了这个问题

layerChanged(layer){
    layer.getSource().clear();
    layer.getSource().refresh();
}