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

时间:2015-09-30 19:16:17

标签: javascript openlayers-3

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

layerid.getPixelColor(x, y);

我知道画布使用的getImageData()方法,但据我所知,这只允许你用100%alpha获得顶层的正确颜色值。

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

1 个答案:

答案 0 :(得分:2)

您可以直接在图层上设置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感兴趣。