这在所有浏览器中都非常快:
var curLayer = new OpenLayers.Layer.Text("layer", { location: "test.txt"});
map.addLayer(curLayer);
Run Code Online (Sandbox Code Playgroud)
但是,以下代码在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);
Run Code Online (Sandbox Code Playgroud)
由于我更喜欢使用的原因OpenLayers.Layer.Vector,但不能由于IE性能问题.
有人知道一个好的解决方案吗?最后,我需要在地图上加载许多可自定义弹出窗口的可点击点功能.
使用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)来减少更大规模的标记数量.当用户放大时,所有标记都会再次出现.
| 归档时间: |
|
| 查看次数: |
2833 次 |
| 最近记录: |