IE8 Openlayers加载了3000个对象解决方案

时间:2014-03-19 08:15:48

标签: javascript internet-explorer-8 openlayers

我的客户端仅适用于IE8。他有openlayers地图,他想要加载3000多边形。 Chrome和IE9可以很容易地做到这一点,但IE8会冻结。对象来自Web服务,如json xml,被解析并添加到向量层。 IE8在添加对象时抛出异常:

“停止运行此脚本? 此页面上的脚本导致Internet Explorer运行缓慢...“

我尝试将功能加载为多线程,但这太慢了。

任何想法?

1 个答案:

答案 0 :(得分:0)

我期望你做的是采取一大堆功能,为每个功能调用一个循环并将它们添加到矢量图层,例如:

for(var feat in feats) {
   vectorLayer.add(feats[feat]);
}

也许尝试使用递归函数。我没有IE8来测试它,但它可能会有所帮助。你也可以使用一个小的超时来调用递归函数(大约1毫秒),所以它需要3秒。加载其中的3000个,但是您可以监控计数和后台的所有内容,这样您就可以在页面中放置一个进度条,这样就不会对用户造成太大的伤害。但如果它变得更好,首先尝试没有超时。 e.g。

//global
var features;

function processFeatures()  {
   if (features[0] != null ) {
      vectorLayer.add(features[0]); //add the (first) feature to the vector layer
      features.splice(0,1); //remove the last added feature from the source
      processFeatures(); // or put setTimeout(processFeatures,1);
   }
}