forEachFeatureAtPixel(pixel, callback, options) {
    if (!this.frameState_ || !this.renderer_) {
      return;
    }
    const coordinate = this.getCoordinateFromPixelInternal(pixel);
    options = options !== undefined ? options : {};
    const hitTolerance =
      options.hitTolerance !== undefined ? options.hitTolerance : 0;
    const layerFilter =
      options.layerFilter !== undefined ? options.layerFilter : TRUE;
    const checkWrapped = options.checkWrapped !== false;
    return this.renderer_.forEachFeatureAtCoordinate(
      coordinate,
      this.frameState_,
      hitTolerance,
      checkWrapped,
      callback,
      null,
      layerFilter,
      null,
    );
  }
Detect features that intersect a pixel on the viewport, and execute a
callback with each intersecting feature. Layers included in the detection can
be configured through the `layerFilter` option in `options`.
For polygons without a fill, only the stroke will be used for hit detection.
Polygons must have a fill style applied to ensure that pixels inside a polygon are detected.
The fill can be transparent.
@param {import("./pixel.js").Pixel} pixel Pixel.
@param {function(import("./Feature.js").FeatureLike, import("./layer/Layer.js").default<import("./source/Source").default>, import("./geom/SimpleGeometry.js").default): T} callback Feature callback. The callback will be
    called with two arguments. The first argument is one
    {@link module:ol/Feature~Feature feature} or
    {@link module:ol/render/Feature~RenderFeature render feature} at the pixel, the second is
    the {@link module:ol/layer/Layer~Layer layer} of the feature and will be null for
    unmanaged layers. To stop detection, callback functions can return a
    truthy value.
@param {AtPixelOptions} [options] Optional options.
@return {T|undefined} Callback result, i.e. the return value of last
callback execution, or the first truthy callback return value.
@template T
@api