有种情况,场景中需要添加很多种路灯(光源)。路灯的坐标数据是从iserver发布查询的,光源数据的数组长度170多。
for循环中<数组.length,然后查询加载报错, 浏览器控制台一直报着色器相关的错误。然后我觉得可能光源数据太多了,就把光源数量写死,不断缩小只到163,这样光源是可以出来,拖动依旧卡;数组从164往后的光源就加载不出来了,每次加载光源都很卡很慢。
doSqlQuery("SmID>0",URL_CONFIG.ludeng.zxld,URL_CONFIG.fule,function(queryResult){
//for(var i=0;i<queryResult.result.features.length;i++){ //这样写控制台报错,光源不显示
for(var i=0;i<163;i++){ //长度写死,加载部分光源不报错,光源显示,拖动场景卡
var x = Number(queryResult.result.features[i].data.SMX); //经度
var y = Number(queryResult.result.features[i].data.SMY); //纬度
//添加路灯
var pos = new Cesium.Cartesian3.fromDegrees(x, y, 40);
var tar= new Cesium.Cartesian3.fromDegrees(x, y, 0);
ludeng = new Cesium.SpotLight(pos , tar, spotLightOtionsludeng1_1);
scene.addLightSource(ludeng );
}
},function(e){
//查询失败回调函数
alert("中型路灯坐标查询失败");
});
不过后来,又想了想,也不会因为显卡问题不展示啊,才这么点数据,也不算多,怎么就崩溃了呢?感觉方法写的也木的问题啊,只能坐等高人指点。