2

这在所有浏览器中都非常快:

var curLayer = new OpenLayers.Layer.Text("layer", { location: "test.txt"});
map.addLayer(curLayer);

但是,以下代码在 Firefox 和 Chrome 中速度很快,但在 IE8 中却慢得令人难以置信(加载 500 个功能需要 30 分钟!):

var curLayer = new OpenLayers.Layer.Vector("layer", {
    protocol: new OpenLayers.Protocol.HTTP({
        url: "test.txt",
        format: new OpenLayers.Format.Text()
    })
});
map.addLayer(curLayer);

出于多种原因,我更喜欢使用OpenLayers.Layer.Vector,但由于 IE 性能问题而不能使用。

有人知道一个好的解决方案吗?最后,我需要在地图上加载许多带有可自定义弹出窗口的可点击点特征。

4

1 回答 1

5

当您使用 Layer.Text 时,标记符号是使用 html+嵌入式标记符号呈现的。使用矢量图层,符号被绘制为矢量图形(svg 和/或 vml)。由于 IE 的矢量渲染性能非常差,openlayers wiki 建议在 IE 6 中使用最多 50 个标记(http://trac.openlayers.org/wiki/FrequentlyAskedQuestions#WhyisMyMapSluggishwhenIAdd500Markers)。

我建议使用 Openlayer 的 POI 聚类策略 ( http://openlayers.org/dev/examples/strategy-cluster.html ) 来减少更大规模的标记数量。当用户放大时,所有标记都会再次出现。

于 2010-08-25T12:40:35.143 回答