OpenLayers 3:刷新单层源

时间:2015-07-06 17:38:07

标签: openlayers-3

我正在尝试刷新单个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参数后,应重新加载图层以使更改可见。

我已经尝试了以下两个陈述,但没有一个有效。

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 ) );
          });

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

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我使用openlayers v4.6.5,就这样解决了这个问题

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