Javascript IE8 Openlayers加载3000对象解决方案

Javascript IE8 Openlayers加载3000对象解决方案,javascript,internet-explorer-8,openlayers,Javascript,Internet Explorer 8,Openlayers,我的客户只使用IE8。他有openlayers地图,他想在上面加载3000个多边形。 Chrome和IE9可以轻松做到这一点,但IE8却停滞不前。对象作为json xml来自web服务,被解析并添加到向量层。IE8在添加对象时引发异常: “停止运行此脚本? 此页面上的脚本导致Internet Explorer运行缓慢…” 我曾尝试以多线程方式加载功能,但这太慢了 有什么想法吗?我想你所做的是获取所有功能,为每个功能调用一个循环,并将它们添加到向量层,例如: for(var feat in fea

我的客户只使用IE8。他有openlayers地图,他想在上面加载3000个多边形。 Chrome和IE9可以轻松做到这一点,但IE8却停滞不前。对象作为json xml来自web服务,被解析并添加到向量层。IE8在添加对象时引发异常:

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

我曾尝试以多线程方式加载功能,但这太慢了


有什么想法吗?

我想你所做的是获取所有功能,为每个功能调用一个循环,并将它们添加到向量层,例如:

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);
   }
}