Обратный вызов операции растрового источника OpenLayers не может найти функцию объектов

#angular #typescript #openlayers-6

Вопрос:

Я использую OpenLayers 6.3.1 и пытаюсь автоматически исправить изображение и нарисовать обработанные пиксели. Для этого до сих пор у меня есть:

 private getPixel(index: number) : number[][] {  return this.imageHistogram.getPixelValue(index);  }    if(this.rasterSource == null) {  this.rasterSource = new Raster({  sources: [this.imageLayer],  operation: function (pixels){  if(this.imageHistogram == null) {  if(pixels instanceof Number) {  this.imageHistogram = new Histogram(pixels as number[][]);  }  }    return this.imageHistogram.getPixelValue(0);  },  lib: {  Histogram: Histogram,  getPixel: this.imageHistogram.getPixelValue  }  });  }    if(this.imageEffectsLayer == null) {  this.imageEffectsLayer = new ImageLayer({  zIndex: imageEffectsZIndex,  className: "effects-layer",  source: this.rasterSource  });  }    this.map.addLayer(this.imageEffectsLayer);  

Таким образом, базовая настройка работает, т. Е. Если я заменю строку возврата произвольным значением (пиксель[0] = 255), это повлияет на вывод. Я почти уверен, что проблема в разделе библиотеки и что мне не нужна Histogram: Histogram, строка. Однако строка getPixel: this.imageHistogram.getPixelValue приводит к возникновению ошибки:

 ERROR Error: Uncaught (in promise): TypeError: Cannot read properties of null (reading 'getPixelValue') TypeError: Cannot read properties of null (reading 'getPixelValue')  

Я попробовал несколько вариантов этой линии:

  • getPixelValue: this.imageHistogram.getPixelValue
  • getPixelValue:Значение GetPixel
  • getPixelValue: Гистограмма.getPixelValue

а также в примере, где я вызвал локальную функцию, которая ее обертывает, но я все равно получаю ошибку при вызове той, которую я обертываю. Как мне сообщить OpenLayers в этой ситуации о функции, которую я хочу, чтобы она вызывала?

P.S. я также пытался объявить объект гистограммы локально для операции, но это тоже не сработало.