javascript - 如何从 Openlayers 3 图层获取像素的颜色值?

标签 javascript openlayers-3

有没有办法读取 Openlayers 3 图层的像素颜色值? 像这样:

layerid.getPixelColor(x, y);

我知道用于 Canvas 的 getImageData() 方法,但据我所知,这只能让您获得具有 100% alpha 的顶层的正确颜色值。

我想从较低层甚至隐藏层获取颜色。 (来自同一域的 WMS 磁贴。)

最佳答案

你可以设置一个postcompose处理程序直接在图层上并从那里读取像素值。我根据 layer spy example 做了一个小例子:

imagery.on('postcompose', function(event) {
  var ctx = event.context;
  var pixelRatio = event.frameState.pixelRatio;
  if (mousePosition) {
    var x = mousePosition[0] * pixelRatio;
    var y = mousePosition[1] * pixelRatio;
    var data = ctx.getImageData(x, y, 1, 1).data;
    var color = 'rgb(' + data[0] + ',' + data[1] + ','+ data[2] + ')';
    $('#box').css('background-color', color);
  }
});

http://jsfiddle.net/m1abjrkm/1/

您可能还对 ol.Map.html#hasFeatureAtPixel 感兴趣.

关于javascript - 如何从 Openlayers 3 图层获取像素的颜色值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32873958/

相关文章:

javascript - 当我调用服务时获取未定义的数据

javascript - 从 Ol3 中的 Draw Interaction 中删除最后一个点

javascript - 动态更新标记 Openlayers 3 的位置

openlayers-3 - 从 openlayers 3 层获取 EPSG 代码

css - openlayers 鼠标位置问题与 css 变换 :scale()

javascript - 如何从服务器获取图像文件并将其压缩在 sailsjs 中

javascript - jquery数据表整列背景颜色

javascript - 确定 Knockout.js 中的单击事件是否选中复选框

javascript - vue.js : how to update state with object?

openlayers-3 - 打开第 3 层 : How to create listener for a modify interaction