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

Openlayers: determine if precompose handler was set

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

var layer = new ol.layer.Vector({
  renderMode: "image"
});

稍后我添加了一个预组合处理程序。

layer.on("precompose", function(event) {
  //Some clipping is applied here
});

我如何确定图层是否具有预合成处理程序(例如,layer.has("precompose"))?

我正在使用 Openlayers 5.20

如果您已经设置了 "precompose" 之类的事件,则需要在图层上手动设置状态才能找到自己。此行为类似于 JavaScript addEventListener 除了您使用的是 OpenLayers 层而不是 DOM 元素(参见

layer.on("precompose", function(event) {
  //Some clipping is applied here
});
layer.set('withPreCompose', true);

然后就可以通过precompose事件获取图层

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