openlayers如何获取当前点击图层的名称?

  var wmsSource = new ol.layer.Tile({
            source: new ol.source.TileWMS({
                url: wmsIp()+'/geoserver/test/wms',
                params: { 
                    'LAYERS': 'LayerName',
                    'singleTile': true 
                }
            })
        })
  map.addLayer(wmsSource);
  
  map.on("click",function(e){
    //在这个map的点击函数里获取wmsSource图层的名称
  
  })
  
阅读 6.7k
1 个回答

你说的图层名称应该不是变量名称,但是在openlayers中,layer没有具体的名称这一属性,所以我们只有去自定义属性

var wmsLayer = new ol.layer.Tile({
    name: 'layerName',
    source: youSource
})

然后获取,直接layer.get就可以

wmsLayer.get('name')

获取所点击的图层可以使用下面的方法,这个图层的具体名称是什么,要看定义的是哪个属性

map.on('click', function (e) {
     let layer = map.forEachLayerAtPixel(e.pixel, function (layer) {return layer}, null, function(layer){
      let type = layer.get('type');
      return layer // type == 'xxx'
    })
    
    console.log(layer)
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题