【发布时间】:2018-10-23 23:19:23
【问题描述】:
我有一个大数据要处理。 它们需要被分类为 4 种颜色,并渲染到 SVG。
我的功能是:(参数A B C用来做某事....)
function mapRender(dataArray,A,B,color1,color2,color3,color4,C){
//......do somthing.......
var colorPlusAry = $.grep(dataArray, function(item,key){
var vote_percentage = parseInt(item.vote_percentage);
var result = vote_percentage>=0 && vote_percentage <50;
return result;
});
//......do somthing.......
}
我使用 grep 生成新的数组,其中 item 具有相同的颜色,并渲染为 SVG。
function colorDistrict(colorArray,color){
var village = '';
var fillColor = 'fill:'+color;
for(var item in colorArray) {
village = colorArray[item].village;
$('svg').find('path').each(function(){
var id = $(this).attr('id');
if(village) {
if(id.substring(6) === village){
$(this).attr('style',fillColor);
}
}
});
}
}
colorDistrict(colorPlusAry,color1); //Render 4 array
成功了,但是数据太大,渲染慢,当我触发该功能时,需要几秒钟才能反应... 如何优化这个函数来渲染颜色?
【问题讨论】:
-
我不确定,但也许某种可观察到的着色模式在第一次渲染之后会更有效..
-
dataArray和colorArray中的对象的结构是什么?你怎么称呼colorDistrict? -
您多久更新一次地图颜色?是什么导致它重新渲染?
-
@PaulLeBeau 当用户点击它会重新渲染,实际上它是在同一个 SVG 地图中渲染不同的数据。
标签: javascript function svg optimization