我的客户端仅适用于IE8。他有openlayers地图,他想要加载3000多边形。 Chrome和IE9可以很容易地做到这一点,但IE8会冻结。对象来自Web服务,如json xml,被解析并添加到向量层。 IE8在添加对象时抛出异常:
“停止运行此脚本? 此页面上的脚本导致Internet Explorer运行缓慢...“
我尝试将功能加载为多线程,但这太慢了。
任何想法?
答案 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);
}
}