function doJSON(){ //读czml复制数组内容16份 var czmlArr=bjCZML; var count=bjCZML.length; var dataroot="test.json"; $.getJSON(dataroot, function(data){ var features=data.features; var fcount=features.length; //循环数组,获取各区的名称和坐标 for(var i = 0; i < fcount; i ){ var feature=features[i]; var name=feature.properties.Name_CHN; var pts=feature.geometry.coordinates[0] var exist=false; for(var j=0;j<czmlArr.length;j ) { var obj=czmlArr[j]; if(obj.name.indexOf(name)>=0) { exist=true; break; } } if(name.indexOf("怀柔")>=0) exist=false; if(!exist){ var item=bjCZML[1]; var item1={}; extend(item1,item); item1.name=name; item1.polygon.positions.cartographicDegrees=doSource1(name,pts); czmlArr.push(item1); //czmlArr[c].name=name; //czmlArr[c].polygon.positions.cartographicDegrees=doSource1(pts); } } var c=czmlArr.length; //alert(c); }); doCSVValue(czmlArr); //输出 var str; str=JSON.stringify(czmlArr); document.write("str:" str); }
//简单数组的复制和修改会影响原值,因此需要硬复制 function getType(o) { var _t; return ((_t = typeof(o)) == "object" ? o==null && "null" || Object.prototype.toString.call(o).slice(8,-1):_t).toLowerCase(); } function extend(destination,source) { for(var p in source) { if(getType(source[p])=="array"||getType(source[p])=="object") { destination[p]=getType(source[p])=="array"?[]:{}; arguments.callee(destination[p],source[p]); } else { destination[p]=source[p]; } } }
//处理坐标 function doSource1(name,pts){ var newPts=[]; var n=5; if(name.indexOf("怀柔")>=0) { n=1; } if(name.indexOf("朝阳")>=0) { pts=pts[0]; } var c=pts.length/n; var count=Math.floor(c); for(var ii = 0; ii < count; ii ){ var j=ii*n; var x=pts[j][0]; var y=pts[j][1]; var z=0; x=x.toFixed(4); y=y.toFixed(4); z=z.toFixed(0); newPts.psh(Number(x));
newPts.push(Number(y));
newPts.push(Number(z));
}
console.log(name+":"+newPts);
//document.write(": "+newPts+"\t\n");
return newPts;
}
/处理数值
function doCSVValue(czmlArr){
//读csv
$.get('zoneAvgAQI_GB2312.csv',function(data){
var dataStr = new String(data);
var lines = dataStr.split('\n');
//循环czml
for(var j=10;j<czmlArr.length;j++){
var obj=czmlArr[j];
var name=obj.name;
var valueIndex=0;
for(var i=0;i<lines.length;i++){
var cols= lines[i].split(',');
if(name.indexOf(cols[1])>=0){
var cValue=cols[2]*100;
//更改czml数组内容
obj.polygon.extrudedHeight[valueIndex].number=cValue;
if(valueIndex>=23){
break;
}
valueIndex++;
}
}
}
console.log("csv:"+lines);
},dataType='text');
}