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

时间:2018-10-09 08:55:48

标签: openlayers

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

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

有时我会添加一个预组合处理程序。

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

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

我正在使用Openlayers 5.20

1 个答案:

答案 0 :(得分:1)

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

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

然后您可以获取带有预组合事件的图层

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