2

我们正在使用 openlayers,在 5.3 版本中我们使用了这种结构:

map.once('postcompose', async(event) => {
  let canvas = event.context.canvas;
  // doing something with canvas
}

但是在 openLayers 6.0 中,事件的参数上下文是未定义的(这当然破坏了我们的应用程序)。

我在这里读到:

图层不再由单个 Canvas 元素组成。相反,它们作为单独的元素添加到地图视口中。

那么如何获得单层的画布呢?

我还在这里读到:

画布上下文。当事件由地图分派时不可用。仅在使用 Canvas 渲染器时可用,否则为 null。

是否可以将画布渲染器设置为所有图层,以便 CanvasRenderingContext2D 不会为“postcompose”事件未定义?

4

1 回答 1

3

使用 ol6postrender在图层上使用事件,新getVectorContext功能提供对即时矢量渲染 API 的访问。
https://github.com/openlayers/openlayers/releases/tag/v6.0.0

要在单个图层上获取渲染上下文:

import {getVectorContext} from 'ol/render';

// construct your map and layers as usual

layer.on('postrender', function(event) {
  const vectorContext = getVectorContext(event);
  // use any of the drawing methods on the vector context
});
于 2019-11-24T17:55:12.877 回答