在 ol6 中进行后期合成 - 如何在每个渲染器上绘制 canvas

on postcompose in ol6 - how to draw on canvas on every render

在 ol6 中,渲染上下文已从 postcompose 事件中删除(根据 release notes)。

我将如何实现在其中一个地图层的每个渲染器上绘制上下文? 目前(ol < 6)我只是在 postcompose 中利用上下文。 我已经尝试添加一个单独的矢量图层并在后渲染中绘制 - 但没有找到一种简单的方法来确保在渲染了较低层之一的情况下在该层上进行渲染(例如,由于 pan/zoom/.. .). 目前我想我必须移动到 Openlayers 之外并在地图顶部创建一个自己的 canvas 上下文 - 这样我仍然可以在 postcompose 中绘制(到我自己的上下文中)。不过不是很优雅...

半径为 0 的圆将不会被看到,但是对于无限渲染缓冲区应该总是有一个渲染后事件

new ol.layer.Vector({
    source: new ol.source.Vector({
        features: [new ol.Feature(new ol.geom.Point([0,0]))]
    }),
    style: new ol.style.Style({
        image: new ol.style.Circle({
            radius: 0
        })
    }),
    renderBuffer: Infinity,
    zIndex: Infinity
});