1、GeometryInstance选中颜色更改
let that = this;
that.leftHander = new Cesium.ScreenSpaceEventHandler(
that.Earth.viewer.scene.canvas
);
that.leftHander.setInputAction((click) => {
let pickObj = that.Earth.viewer.scene.pick(click.position);
if (pickObj) {
that.clearSelected();
let attributes = pickObj.primitive.getGeometryInstanceAttributes(
pickObj.id
);
if (attributes) {
that.primitive = pickObj.primitive;
that.selectId = pickObj.id;
attributes.color = Cesium.ColorGeometryInstanceAttribute.toValue(
Cesium.Color.fromCssColorString("#7B68EE").withAlpha(0.6)
);
}
let data =
that.Earth.cimdatamanager.paishuiFacilityData.psdypolygonList;
if (data) {
data.forEach((o) => {
if (o.properties.gw_id == pickObj.id) {
that.isShow = 2;
that.unitData = o.properties;
that.drawPaiShuiLine(o.properties.drauintid);
}
});
}
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
2、恢复原来的颜色
clearSelected() {
if (this.primitive) {
let attributes = this.primitive.getGeometryInstanceAttributes(
this.selectId
);
if (attributes) {
attributes.color = Cesium.ColorGeometryInstanceAttribute.toValue(
Cesium.Color.fromCssColorString("#4a7d84").withAlpha(0.6)
);
}
}
},
3、绘制带箭头直线
result.forEach((o) => {
var redLine = this.viewer.entities.add({
// 贴在地面上 两点之间的直线距离
name: "line",
polyline: {
positions: Cesium.Cartesian3.fromDegreesArray([
o.inx,
o.iny,
o.outx,
o.outy,
]),
10,
// 不带箭头的线
// material: Cesium.Color.RED,
// 是否紧贴地面
//clampToGround: true,
// 带箭头的线
material: new Cesium.PolylineArrowMaterialProperty(
Cesium.Color.RED
),
},
});