Openlayers:确定是否设置了预合成处理程序

Openlayers:确定是否设置了预合成处理程序,openlayers,Openlayers,我需要确定是否在层上设置了预合成回调: var layer = new ol.layer.Vector({ renderMode: "image" }); 后来我添加了一个预合成处理程序 layer.on("precompose", function(event) { //Some clipping is applied here }); 如何确定层是否具有预合成处理程序,例如layer.hasprecompose 我使用的是Openlayers 5.20如果您已经设置了类似prec

我需要确定是否在层上设置了预合成回调:

var layer = new ol.layer.Vector({
  renderMode: "image"
});
后来我添加了一个预合成处理程序

layer.on("precompose", function(event) {
  //Some clipping is applied here
});
如何确定层是否具有预合成处理程序,例如layer.hasprecompose


我使用的是Openlayers 5.20

如果您已经设置了类似precompose的事件,则需要手动在您的层上设置一个状态来查找您自己。此行为类似于JavaScript addEventListener,只是您使用的是OpenLayers层而不是DOM元素请参见

然后,您可以使用precompose事件获取层

map.getLayers().getArray()
  .find(el => el.get('withPreCompose'))

谢谢我需要一些时间来考虑这个。。。手动处理状态感觉很难。
map.getLayers().getArray()
  .find(el => el.get('withPreCompose'))