为openlayers添加一个timeslider控制器

时间:2016-12-19 07:09:46

标签: jquery slider openlayers-3 geoserver

我有一个数据库,其中包含html格式的一些天气数据。每个表格代表特定时间点的天气状况。 使用地理服务器,我可以在浏览器上显示每个表。 我一直在寻找一种方法,可以添加为我的.js代码的滑块,因此当我滑过滑块时,它会显示每分钟的天气状况。

我在这里找到了一些html代码,但老实说,不知道在哪里添加以符合我的目的(或者即使它真的符合目的)

https://github.com/metno/openlayers-timeslider

此外,我不知道这是否有用,但显示地图上数据的var rainLayer = new ol.layer.Tile({ source: new ol.source.TileWMS({ url: 'http://x.x.x.x/geoserver/wms', params: {'LAYERS': 'storename:layername'} }); 部分如下:

frameworks: ['jasmine'],
files: [
  'public/javascripts/angular/*.js',
  'app_client/app.js',
  'app_client/dashboard/controller/test/addfix-ctrl.spec.js'
],

1 个答案:

答案 0 :(得分:2)

您可以将ImageMosaic插件用于Geoserver的栅格时间序列数据。 Here是用于实现启用时间的ImageMosaic的文档。 在实现镶嵌后,您需要将时间参数传递给openlayers中的geoserver,如下所示:

var wms = new ol.layer.Tile({
            name: name,
            opacity: opacity,
            source: new ol.source.TileWMS({
                url: global.geoserverWMS2 + 'wms',
                params: {
                    'LAYERS': layer_name,
                    'TILED': true,
                    'TIME': '2017-01-01', // this is an example
                },
                serverType: 'geoserver'
            })
        });

一旦你想更改时间参数以呈现相应的天气图像,只需使用wms图层上的updatePrams(),如下所示:

wms.getSource().updateParams({'time': '2016-01-01'})
wms.getSource().updateParams({'time': '2015-01-01'})
wms.getSource().updateParams({'time': '2014-01-01'})

它将刷新数据源并渲染新图像。