เอาล่ะ ฉันคิดว่าฉันมี setTimeout ทั้งหมดนี้สมบูรณ์แบบแล้ว แต่ดูเหมือนว่าฉันจะคิดผิดอย่างมหันต์
ฉันใช้ excanvas และ javascript เพื่อวาดแผนที่สถานะบ้านเกิดของฉัน อย่างไรก็ตาม ขั้นตอนการวาดทำให้เบราว์เซอร์ใช้งานไม่ได้ ตอนนี้ฉันถูกบังคับให้หันไปใช้ IE6 เพราะฉันอยู่ในองค์กรขนาดใหญ่ ซึ่งอาจเป็นส่วนสำคัญของการทำงานช้า
ดังนั้นสิ่งที่ฉันคิดว่าจะทำคือสร้างขั้นตอนที่เรียกว่า distributionDrawPolys (ฉันอาจใช้คำผิดตรงนั้น ดังนั้นอย่าไปเน้นที่คำที่กระจาย) ซึ่งโดยพื้นฐานแล้วจะทำให้รูปหลายเหลี่ยมหลุดออกจากอาเรย์ส่วนกลางเพื่อที่จะดึง 50 ของพวกเขาในแต่ละครั้ง
นี่เป็นวิธีที่ส่งรูปหลายเหลี่ยมไปยังอาเรย์ส่วนกลางและรัน setTimeout:
for (var x = 0; x < polygon.length; x++) {
coordsObject.push(polygon[x]);
fifty++;
if (fifty > 49) {
timeOutID = setTimeout(distributedDrawPolys, 5000);
fifty = 0;
}
}
ฉันใส่การแจ้งเตือนไว้ที่ส่วนท้ายของวิธีการนั้น มันจะทำงานได้ในไม่กี่วินาที
วิธีการกระจายมีลักษณะดังนี้:
function distributedDrawPolys()
{
if (coordsObject.length > 0) {
for (x = 0; x < 50; x++) { //Only do 50 polygons
var polygon = coordsObject.pop();
var coordinate = polygon.selectNodes("Coordinates/point");
var zip = polygon.selectNodes("ZipCode");
var rating = polygon.selectNodes("Score");
if (zip[0].text.indexOf("HH") == -1) {
var lastOriginCoord = [];
for (var y = 0; y < coordinate.length; y++) {
var point = coordinate[y];
latitude = shiftLat(point.getAttribute("lat"));
longitude = shiftLong(point.getAttribute("long"));
if (y == 0) {
lastOriginCoord[0] = point.getAttribute("long");
lastOriginCoord[1] = point.getAttribute("lat");
}
if (y == 1) {
beginPoly(longitude, latitude);
}
if (y > 0) {
if (translateLongToX(longitude) > 0 && translateLongToX(longitude) < 800 && translateLatToY(latitude) > 0 && translateLatToY(latitude) < 600) {
drawPolyPoint(longitude, latitude);
}
}
}
y = 0;
if (zip[0].text != targetZipCode) {
if (rating[0] != null) {
if (rating[0].text == "Excellent") {
endPoly("rgb(0,153,0)");
}
else if (rating[0].text == "Good") {
endPoly("rgb(153,204,102)");
}
else if (rating[0].text == "Average") {
endPoly("rgb(255,255,153)");
}
}
else { endPoly("rgb(255,255,255)"); }
}
else {
endPoly("rgb(255,0,0)");
}
}
}
}
}
แก้ไข: แก้ไขรูปแบบแล้ว
ดังนั้นฉันคิดว่าเมธอด setTimeout จะทำให้ไซต์วาดรูปหลายเหลี่ยมเป็นกลุ่มได้ ดังนั้นผู้ใช้จึงสามารถโต้ตอบกับเพจได้ในขณะที่ยังวาดรูปอยู่ ฉันทำอะไรผิดที่นี่?