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



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

layerid.getPixelColor(x, y);

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

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

你可以直接在图层上设置postcompose处理程序,并从那里读取像素值。我在图层间谍的基础上做了一个小例子:

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.

感兴趣

最新更新