2014-03-19 2 views
0

Мой клиент работает только с IE8. У него есть карта открытых слоев, которую он хочет загрузить на ней 3000 полигонов. Chrome и IE9 могут сделать это легко, но IE8 заморозить. Объекты приходят из веб-службы как json xml, анализируются и добавляются в векторный слой. IE8 вызывает исключение, добавьте объекты:IE8 Openlayers load 3000 объектов решение

«Остановка выполнения этого сценария Сценарий на этой странице вызывает Internet Explorer медленно работать ...?»

Я пытался загрузить функции, как многопоточность, но это слишком медленно.

Любые идеи?

ответ

0

, что я ожидаю, что ты принимал целую кучу функций, вызов цикла для каждого и добавить их к векторному слою, такие как:

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

, возможно, дать ему попробовать с рекурсивной функцией. У меня нет IE8 для тестирования, но это может помочь. также вы можете использовать небольшой тайм-аут при вызове этой рекурсивной функции (1 мс или около того), поэтому это займет 3 секунды. загрузить 3000 из них, но вы можете следить за подсчетом и все в фоновом режиме, поэтому вы сможете поставить индикатор прогресса на своей странице, чтобы он не повредил пользователю. но сначала попробуйте без тайм-аута, если он станет лучше. , например.

//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); 
    } 
} 
+0

спасибо. Я пробовал, он рисует многоугольники, но он работает медленно ... Спасибо за помощь – Ira

Смежные вопросы