Эксперимент по манипулированию цветом в openlayers 6 завершается неудачно с tileSource.getTileGridForProjection не является функцией - PullRequest
0 голосов
/ 28 февраля 2020

Используя openlayers 6.2.1, я пытаюсь изменить пиксельный цвет плиток из источника xyz (например, Color Manipulation пример ),

Сначала я определяю источник XYZ:

const xyz = new XYZ({
    url: 'https://mbenzekri.github.io/frcommunes/fr/communes/{z}/{x}/{y}.png',
    maxZoom: 12,
    minZoom: 5
})

затем RasterSource для управления цветами

const rastersource= new Raster({
    sources: [ xyz ],
    operation: function (pixels, data) { 
        pixels[0] = pixels[0] 
        pixels[1] = pixels[1] 
        pixels[2] = pixels[2] 
    }
})

затем ImageLayer:

const imagelayer = new ImageLayer({
    source: rastersource
})

добавление этого слоя в мою карту поверх объекта слоя OSM завершается неудачно с сообщением в время рендеринга:

TileLayer.js:160 Uncaught TypeError: tileSource.getTileGridForProjection is not a function
    at CanvasTileLayerRenderer.renderFrame (TileLayer.js:160)
    at TileLayer.Layer.render (Layer.js:216)
    at CompositeMapRenderer.renderFrame (Composite.js:112)
    at Map.PluggableMap.renderFrame_ (PluggableMap.js:1265)
    at Map.<anonymous> (PluggableMap.js:186)

замена imagelayer на простой TileLayer с тем же источником xyz работает нормально (индекс строки исходного кода. js: 37).

const tilelayer = new TileLayer({
    source: xyz
})

я делаю что-то не так, не хватает некоторых конфигураций?

Заранее спасибо за помощь или интерес

полный код здесь (простой пример 50 строк)

the бесплатная версия доступна для тестирования на странице github

1 Ответ

1 голос
/ 28 февраля 2020

Ваш импорт неправильный.

import ImageLayer from 'ol/layer/Tile';

должно быть

import ImageLayer from 'ol/layer/Image';
...