前沿:通常kml中的文件坐标是整个大字符串,js读取后通常带有空格换行等,而且高程的0后边没有逗号(不方便分成数组),以单个块状多边形为例,如下形式:
114.1374601586555,22.56259247021183,0
114.1362869838166,22.56056441265535,0
114.140259939962,22.55882558904991,0
但是cesium中需要的格式是这样:
[114.1374601586555, 22.56259247021183, 0, 114.1362869838166, 22.56056441265535, 0, 114.140259939962, 22.55882558904991, 0]
所以需要先清除空格和换行,在吧“,0”替换成“,0 ”,然后根据空格分开
let kml= kml.replace(/\ +/g,"").replace(/[\r\n]/g, "").replace(/,0/g,",0 ").split(" ");
kml.pop();
console.log(kml);
打印结果如下:
最后再遍历数据即可:
kml.forEach(item=>{
if(item){
let p = item.split(',')
positions.push(parseFloat(p[0]))
positions.push(parseFloat(p[1]))
positions.push(parseFloat(p[2]))
}
})
console.log(positions);
打印结果如下:
至此,就可以用该坐标数组绘制entity等对象