Openlayers 颜色查找表/颜色操作/颜色校正

Openlayers 颜色查找表/颜色操作/颜色校正,openlayers,Openlayers,我想操纵瓷砖层的颜色。我找到了三种解决方案,但都不充分 解决方案1:我使用一个图像层(ol.layer.image),它使用一个光栅源(ol.source.graster),其颜色可以被操作。请参见OpenLayers的示例。一旦图像被渲染,放大和缩小是平滑的,因为图像的像素不是在每一帧上都被操纵;图像仅调整大小。缺点是,缩小时,图像会变小,直到不再填充画布。只有当缩放停止时,才会完全重新绘制以填充画布。无法使用此解决方案,因为我的用户应该始终看到所有可用的地图数据,即使在缩小时也是如此。“缩小

我想操纵瓷砖层的颜色。我找到了三种解决方案,但都不充分

解决方案1:我使用一个图像层(
ol.layer.image
),它使用一个光栅源(
ol.source.graster
),其颜色可以被操作。请参见OpenLayers的示例。一旦图像被渲染,放大和缩小是平滑的,因为图像的像素不是在每一帧上都被操纵;图像仅调整大小。缺点是,缩小时,图像会变小,直到不再填充画布。只有当缩放停止时,才会完全重新绘制以填充画布。无法使用此解决方案,因为我的用户应该始终看到所有可用的地图数据,即使在缩小时也是如此。“缩小、等待、填充画布”的循环太分散注意力了

解决方案2:扩展解决方案1,我在图像层下面添加了一个平铺层,以便在缩小时画布始终充满地图数据。请参见OpenLayers的示例。缺点是,缩小时,图像层外的区域显示非颜色操纵的瓷砖层。无法使用此解决方案,因为我的用户必须不知道任何颜色校正

解决方案3:我使用了一个平铺层,并向我的
ol.Map
实例添加了一个事件侦听器,用于侦听
postcompose
事件。当该事件触发时,我通过读取像素颜色、更改它们并将它们写回上下文来直接操纵画布上下文。这可以工作,但是速度非常慢,因为
postcompose
会在每一帧上触发,我必须重新操作画布上的所有像素

我的问题:

  • 如何有效地操纵平铺层的颜色,同时避免解决方案1(缩小时背景变得可见)和解决方案2(第二层与第一层不匹配)的问题

  • OpenLayers支持颜色查找表吗

  • 可以设置颜色配置文件吗


  • 查看github上的OLExt,它们有一个颜色过滤器扩展,在示例中使用了一个平铺层。至于颜色配置文件,它们有一些预定义的配置文件,如灰度和深褐色。你也许可以通过他们的代码找到你自己的部分