(点击链接)某些发布的文章不全,只能生存一个多边形的动态墙体,若要生存多个多边形的动态立体墙体,则要换其他链接进行尝试(点击链接)
1、实现效果
2、实现方法
let features = [];
let three
let maximumHeight;
let dayMaximumHeight;
let minimumHeight;
function wallAdd(positions) {
//这边传送的position格式是点的x、y、z,数组形式两行四列(图)
maximumHeight = [];
dayMaximumHeight = [];
minimumHeight = [];
positions.forEach((item, index) => {
if (item.length < 3) return
features = []
item.forEach(e => {
var cartographic = ellipsoid.cartesianToCartographic(e);
var lat = Cesium.Math.toDegrees(cartographic.latitude);
var lng = Cesium.Math.toDegrees(cartographic.longitude);
var alt = cartographic.height;
features.push(lng);
features.push(lat);
features.push(alt);
//流动墙体
minimumHeight.push(alt)//[000]
})
minimumHeight.push(0)//[0000]
for (let i = 0; i < minimumHeight.length; i++) {
maximumHeight.push(minimumHeight[i] + viewModel.QTheight * 1
);
dayMaximumHeight.push(minimumHeight[i]);
}
var s = features.concat(features.slice(0, 3))
console.log(minimumHeight, maximumHeight, s, '21')
three = viewer.entities.add({
// name: 'Wall' + index,
wall: {
positions: Cesium.Cartesian3.fromDegreesArrayHeights(s),
material: new Cesium.ColorMaterialProperty(
new Cesium.CallbackProperty(function () {
let color = Cesium.Color.fromCssColorString(viewModel.colorPink1)
return color;
}, false)),
outline: true,
outlineColor: Cesium.Color.BLACK,
// material: new Cesium.WallMaterialProperty(Cesium.Color.GREEN, 10)
//vertexFormat: Cesium.PerInstanceColorAppearance.VERTEX_FORMAT,
//outlineWidth:Math.min(4.0, scene.maximumAliasedLineWidth),
minimumHeights: new Cesium.CallbackProperty(e => {
return minimumHeight;
}, false),
maximumHeights: new Cesium.CallbackProperty(e => {
if (viewModel.animationShow) {
for (let i = 0; i < minimumHeight.length; i++) {
dayMaximumHeight[i] += 500 * 0.001 * viewModel.wallSpeed;//[5,5,5,5][10,10,10,10][15,15,15,15]
if (dayMaximumHeight[i] > maximumHeight[i]) {
dayMaximumHeight[i] = minimumHeight[i];
}
}
return dayMaximumHeight;
} else {
return maximumHeight;
}
}, false),
}
})
})
}