0

使用 openlayers 6.2.1,我正在尝试从 xyz 源更改图块的像素颜色(如颜色操作示例),

我首先定义一个 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)

用具有相同 xyz 源的简单 TileLayer 替换 imagelayer 可以正常工作(源代码行 index.js:37)。

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

我做错了什么,缺少一些配置吗?

提前感谢您的帮助或兴趣

完整代码在 这里(简单示例 50 行)

无错误版本可在github 页面进行测试

4

1 回答 1

1

您的导入错误。

import ImageLayer from 'ol/layer/Tile';

应该

import ImageLayer from 'ol/layer/Image';
于 2020-02-28T17:54:04.057 回答