Cesium 用Entity绘制polyline,如果使用CallbackProperty方法进行动态绘制,depthFailMaterial属性将失效。
从官方github上的issue找了替代的方法。
// 绘制方法
this._candidateLinePrimitive = this.scene.primitives.add(
new Cesium.Primitive({
geometryInstances: new Cesium.GeometryInstance({
geometry: new Cesium.PolylineGeometry({
positions: this._candidateLinePositions,
width: this.defaultLineWidth,
vertexFormat: Cesium.PolylineMaterialAppearance.VERTEX_FORMAT
})
}),
appearance: new Cesium.PolylineMaterialAppearance({
material: new Cesium.Material({
fabric: {
type: "PolylineDash",
uniforms: {
color: (() => {
let c = this.lineMaterial.color.getValue();
return new Cesium.Color(c.red, c.green, c.blue, 1.0);
})()
}
}
}),
renderState: {
depthTest: {
enabled: false // shut off depth test
}
}
}),
asynchronous: false // block or not
})
);
// 动态刷新,remove 再 add
if (!_.isEmpty(this._candidateLinePrimitive)) {
this.scene.primitives.remove(this._candidateLinePrimitive);
}