Несколько ImageLayer с RasterSource не видны - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь добавить несколько слоев изображений Openlayer (с использованием растрового источника) с разными экстентами к одной карте.Если я добавляю один слой, он отображается, но при добавлении нескольких слоев тоже не отображается.

  1. Я думал, zindex - это проблема, которую я пытался изменить без толку.
  2. Я протестировал удаление одного после добавления, затем показывает второй (один не удален)

При регистрации количества слоев всегда отображаются все 3 слоя (2, которые я добавил, и 1 базовый слой, т.е. карта)

this.raster = new RasterSource({
      sources: [this.layer.getSource()],
      operation: (pixels, data) => {
        let pixel = pixels[0];
        pixel[0] = 0;
        pixel[1] = 255;
        pixel[2] = 0;
        return pixel;
      }
    });

let previewColorLayer = new ImageLayer({
      opacity: 0.4,
      source: this.raster,
      extent: [972.145, 1948.98, 1270.395, 2082.48],
      zIndex: 1000
      // extent: ex
    });


    let previewColorLayer2 = new ImageLayer({
      opacity: 0.4,
      source: this.raster,
      extent: [952.145, 1756.98, 1270.395, 1890.48],
      zIndex: 2000
      // extent: ex
    });

    this.overviewMap.getOverviewMap().addLayer(previewColorLayer);
    this.overviewMap.getOverviewMap().addLayer(previewColorLayer2);

1 Ответ

1 голос
/ 11 июля 2019

Я попытался разбить пример растрового слоя на два экстента и получить ту же проблему, кажется, созданный источник не может использоваться более чем в одном слое. Но вы можете использовать опции, использованные для его построения

this.rasterOptions = {
  sources: [this.layer.getSource()],
  operation: (pixels, data) => {
    let pixel = pixels[0];
    pixel[0] = 0;
    pixel[1] = 255;
    pixel[2] = 0;
    return pixel;
  }
};

let previewColorLayer = new ImageLayer({
  opacity: 0.4,
  source: new RasterSource(this.rasterOptions},
  extent: [972.145, 1948.98, 1270.395, 2082.48],
  zIndex: 1000
  // extent: ex
});

let previewColorLayer2 = new ImageLayer({
  opacity: 0.4,
  source: new RasterSource(this.rasterOptions},
  extent: [952.145, 1756.98, 1270.395, 1890.48],
  zIndex: 2000
  // extent: ex
});
...