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

How to get a pixel's color value from an Openlayers 3 layer?

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

layerid.getPixelColor(x, y);

我知道与 canvas 一起使用的 getImageData() 方法,但据我所知,这只允许您使用 100% alpha 获得顶层的正确颜色值.

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

你可以设置一个postcompose handler directly on a layer and read the pixel value from there. I made a small example based on the 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 感兴趣。