如何在新的ImageWMS中使用openlayers getUrl函数?

时间:2019-07-08 11:48:07

标签: reactjs openlayers

我在我的reactjs项目中使用OpenLayers。按照documentation

我尝试了以下代码

var sourceData = new ImageWMS(
      {
         params: {'LAYERS': 'top:states'},
         ratio: 1,
         serverType: 'geoserver',
         getURL: function () {
          console.log('bounds');
          }
      });



this.olmap = new Map({
      target: null,
      layers: [new ImageLayer({
          extent: [-13884991, 2870341, -7455066, 6338219],
          source: sourceData
        })],
      view: new View({
        center: this.state.center,
        zoom: this.state.zoom
      })
    });

我正在尝试上面的代码,但未显示控制台日志。 我可以知道如何使其正常工作,以便获得控制台日志吗?

1 个答案:

答案 0 :(得分:1)

它只是返回用于构造源的网址,例如

var sourceData = new ImageWMS(
      {
         url: 'https://ahocevar.com/geoserver/wms',
         params: {'LAYERS': 'top:states'},
         ratio: 1,
         serverType: 'geoserver'
      });

console.log(sourceData.getURL());  // 'https://ahocevar.com/geoserver/wms'

要记录完整的网址或其查询字符串参数,您需要自定义imageLoadFunction

var sourceData = new ImageWMS(
      {
         url: 'https://ahocevar.com/geoserver/wms',
         params: {'LAYERS': 'top:states'},
         ratio: 1,
         serverType: 'geoserver',
         imageLoadFunction: function(image, src) {
           var params = new URLSearchParams(src.slice(src.indexOf('?')));
           console.log('bounds', params.get('BBOX'));
           image.getImage().src = src;
         }
      });