具有多个矢量图层的OpenLayers地图使整个页面在chrome中闪烁

时间:2013-10-11 10:45:00

标签: javascript google-chrome svg openlayers

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


我创建了一个fiddle来证明这个问题。尝试将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);
}

1 个答案:

答案 0 :(得分:1)

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

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

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

更改以下行
renderers: OpenLayers.Layer.Vector.prototype.renderers,

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

这解决了我的问题。

HTH

<强>更新

原来这不是解决问题的方法。问题出在Chrome的合成引擎上。我已经向铬开发者提交了一份错误报告,他们已经成功验证并接受了错误报告。

我不确定开发人员何时会解决这个问题,但至少还有一些工作正在进行中。

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