有没有办法读取Openlayers 3图层的像素颜色值? 像这样:
layerid.getPixelColor(x, y);
我知道画布使用的getImageData()方法,但据我所知,这只允许你用100%alpha获得顶层的正确颜色值。
我想从较低或甚至隐藏的图层中获取颜色。 (来自同一域的WMS磁贴。)
答案 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感兴趣。