3

我有一个 OpenLayers 地图,它几乎占据了所有页面大小。它上面还有 13 个矢量图层。当我在启用所有图层的情况下拖动地图时 - 整个页面开始闪烁。它仅在 chrome 中复制,在 Firefox 中一切看起来都很好。当我禁用两层时 - 闪烁停止。如果我缩小地图 - 闪烁停止。它看起来像某种 chrome bug。我的 chrome 版本:31.0.1650.8 beta-m


我创建了一个小提琴来演示这个问题。尝试将 VECTOR_LAYERS_COUNT 设置为 45,您会看到问题,如果您减小地图的宽度/高度,即使有 45 层,闪烁也会停止。这是代码:

var VECTOR_LAYERS_COUNT = 25; // set to 45 to see result
for (var i = 0; i < VECTOR_LAYERS_COUNT; i++) {
    var layer = new OpenLayers.Layer.Vector(i, {
        renderers: OpenLayers.Layer.Vector.prototype.renderers,
        rendererOptions: {
            zIndexing: true
        },
        visibility: true,
    });
    mapa.addLayer(layer);
}
4

1 回答 1

1

在过去的几周里,我在 Chrome 中遇到了同样的问题。

这似乎是 OpenLayers 和更高版本的 Chrome 的一个已知问题。

解决方法是禁用图层的 SVG 渲染。

更改以下行

renderers: OpenLayers.Layer.Vector.prototype.renderers,

renderers: ['Canvas', 'VML'],

这解决了我的问题。

高温高压

更新

事实证明,这不是问题的解决方案。问题在于 Chrome 的合成引擎。我已经向 chromium 开发者提交了一个 bug 报告,他们已经成功验证并接受了这个 bug 报告。

我不确定开发人员何时会着手修复它,但至少有一些工作正在进行中。

对于那些在家关注的人,这是错误报告:https ://code.google.com/p/chromium/issues/detail?id=346621

于 2014-02-14T06:31:27.443 回答