【问题标题】:WMSLayer.getSource() Is not a function?WMSLayer.getSource() 不是函数吗?
【发布时间】:2016-05-12 14:09:47
【问题描述】:

我只是想尝试使用 openlayers 3.14 显示有关 wms 层的有关层详细信息的信息

map.on('singleclick', function(evt) {   
  var url = layers.getSource().getGetFeatureInfoUrl(
      evt.coordinate, viewResolution, viewProjection,
      {'INFO_FORMAT': 'text/javascript',
       'propertyName': 'formal_en'});
  if (url) {
    var parser = new ol.format.GeoJSON();
    $.ajax({
      url: url,
      dataType: 'jsonp',
      jsonpCallback: 'parseResponse'
    }).then(function(response) {
      var result = parser.readFeatures(response);
      if (result.length) {
        var info = [];
        for (var i = 0, ii = result.length; i < ii; ++i) {
          info.push(result[i].get('formal_en'));
        }
        container.innerHTML = info.join(', ');
      } else {
        container.innerHTML = '&nbsp;';
      }
    });
  }
});

【问题讨论】:

  • 层在哪里定义?

标签: ajax openlayers-3 wms


【解决方案1】:

layers 可能是ol.layer 的数组,或者它甚至可能在函数范围内不可用。

无论哪种方式,您都需要获得一个单层来使用.getGetFeatureInfoUrl()

所以要么是这样的:

layers[0].getSource().getGetFeature....

或者如果图层不可用,您可以使用.getLayers()从地图对象中获取它

map.getLayers().forEach(function(layer) {
    // optionally check that the layer is the one you want.
    if (layer.getProperties().ref === 'myLayer'){
      layer.getSource().getGetFeature....
    }
}

【讨论】:

    猜你喜欢
    • 2019-08-22
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多