多层的建筑体,在不需要精确的模型效果时,使用Cesium的Polygon去模拟每层楼的楼板效果,设定每层楼的高度和楼层的总数,生成CZML文件,批量加载楼板的数据。
根据Cesium的api,加载一个带高度拉起效果的polygon,使用以下的代码:
var greenPolygon = viewer.entities.add({
name : 'Green extruded polygon',
polygon : {
hierarchy : Cesium.Cartesian3.fromDegreesArray([-108.0, 42.0,
-100.0, 42.0,
-104.0, 40.0]),
height:50000,
extrudedHeight: 100000.0,
material : Cesium.Color.GREEN
}
});
其中设置的height和extrudedHeight是关键参数,height标示polygon离地的高度,extrudedHeight是polygon的拉高高度,根据楼层高度,设置每层的height,在加上楼层高度,设置extrudedHeight,到达分层的楼板效果。
CZML数据节点的编辑如下:
{
"id":"floor_0",
"name":"floors"
,"polygon":
{
"positions":
{
"cartographicDegrees":[坐标数组]},
"material":
{
"solidColor":
{
"color":
{
"rgba":[255,255,255,120]}
}
},
//离地高度设置
"height":0,
//拉高高度设置
"extrudedHeight":4.6,"
outline":true}
}
使用js或者其他代码,循环根据楼层数和高度进行遍历,生成最终的CZML数据。
以下是简单楼板显示效果,加上鼠标移动时的选中效果: