entities方式绘制模型:【线条】
var gltf = viewer.entities.add({
guid: crossguid,
name: 'gltf',
polyline: {
width: 1,
material: Cesium.Color.WHITE,
show: true,
positions: Cesium.Cartesian3.fromDegreesArrayHeights(nodePositionArr),
distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 10000)
},
});
primitives方式添加模型:
viewer.scene.primitives.add(
Cesium.Model.fromGltf({
id: feature.towerguid,
url: '/model/' + _that.fileglb + '/' + feature.modelname + '.glb', // 本地文件
modelMatrix: towerMt4Tower,
scale: 1, // 放大倍数
}),
)
通过鼠标右键点击模型使模型变颜色成选中状态:
// 鼠标右键获取属性
const handler = new Cesium.ScreenSpaceEventHandler(canvas);
const canvas = Winviewer.scene.canvas;
const ellipsoid = Winviewer.scene.globe.ellipsoid;
handler.setInputAction(function (click) {
// 禁止浏览器鼠标右键菜单
document.oncontextmenu = function () {
return false;
};
_that.pickModel = Winviewer.scene.pick(click.position);
_that.position = Winviewer.scene.pickPosition(click.position);
const pickModel = _that.pickModel;
if (pickModel) {
if (pickModel.id.guid) {
//entities 添加模型变色
pickModel.id.polyline.material.color = Cesium.Color.RED;
} else {
//primitive 添加模型变色
pickModel.primitive.color = new Cesium.Color(1.0, 0, 0, 1.0);
}
}
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
在关闭的事件中记得要删除鼠标点击事件,否则会叠加重复触发
handler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_CLICK)//移除鼠标右键事件