Search code examples
openlayers

Openlayers: determine if precompose handler was set


I need to determine if a precompose-callback was set on a layer:

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

and sometime later I add a precompose handler.

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

How can I determine, if a layer has a precompose-handler (e.g., layer.has("precompose"))?

I am using Openlayers 5.20


Solution

  • You need to set a state manually on your layer to find yourself if you already set an event like "precompose". This behaviour is similar to JavaScript addEventListener except your are using OpenLayers layer instead of DOM element (see this question)

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

    Then you can get layers with precompose event

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