Openlayers 6-暂停渲染

时间:2020-07-20 09:27:51

标签: openlayers openlayers-6

如何在openlayers 6中暂停图层/地图渲染?在地图上滚动或拖动时,性能很差。我只想在“移动”之后渲染地图。

3 个答案:

答案 0 :(得分:2)

  1. 您可以检查矢量层上的updateWhileAnimatingupdateWhileInteracting是否已设置为true。如果它们是false(默认值),则将获得更好的性能。参见https://openlayers.org/en/latest/apidoc/module-ol_layer_Vector-VectorLayer.html

  2. 您是否正在使用样式缓存?这可以极大地提高性能。参见http://openlayersbook.github.io/ch06-styling-vector-layers/example-07.html

  3. 您要渲染多少个对象?数量过多会影响性能。

  4. 您要渲染什么类型的对象?我已经看到(并报告了)用多种样式渲染线条可能非常慢的情况。在这种情况下,简单的样式可以起到很大的帮助。

答案 1 :(得分:1)

在交互和动画期间使用ol / layer / VectorImage进行更快的渲染,但代价是渲染精度较低。 参见https://openlayers.org/en/latest/examples/image-vector-layer.html

答案 2 :(得分:0)

我找到了解决方法:

map.on('movestart', () => {
    layers.forEach(layer => {
        layer.setExtent(map.getView().calculateExtent());
    });
});

map.on('moveend', () => {
    layers.forEach(layer => {
        layer.setExtent(undefined);
    });
});