前情提要:在项目中需要以实体为中心指定半径绘制圆,测试时发现会不定时的报上面的错误,然后实体就停止渲染了
实体渲染代码如下:
var entity = viewer.entities.add({
id:item.id,
position: position,
name:carNum,
description: descriptionStr,
orientation: orientation,
model: {
uri: item.url,
scale: 1, //应用于此模型的统一比例。
minimumPixelSize: 10,//最小的模型像素
maximumScale: 100,//最大的模型像素
incrementallyLoadTextures: true,
asynchronous: true,
shadows: true,
distanceDisplayCondition: new window.Cesium.DistanceDisplayCondition(0.0, 1200.0), //0-7000显示模型。
luminanceAtZenith: 2,
heightReference: window.Cesium.HeightReference.CLAMP_TO_GROUND // 让模型在地形上紧贴
},
point: {
distanceDisplayCondition: new window.Cesium.DistanceDisplayCondition(1200.0, 20000000.0), //7000以上显示一个点。
pixelSize: 10,
color: window.Cesium.Color.BLACK, // default: WHITE
outlineColor: window.Cesium.Color.BLACK, // default: BLACK
},
label: { //文字标签
text:carNum,
font: fontSize,// 15pt monospace
scale: 0.5,
style: window.Cesium.LabelStyle.FILL,
fillColor: window.Cesium.Color.fromCssColorString(this.state.textColor),
pixelOffset: new window.Cesium.Cartesian2(0, -75), //偏移量
showBackground: true,
backgroundColor: window.Cesium.Color.fromCssColorString(bc),
verticalOrigin: window.Cesium.VerticalOrigin.BOTTOM,
pixelOffset: new window.Cesium.Cartesian2(0, -10),
disableDepthTestDistance: Number.POSITIVE_INFINITY,
scaleByDistance:new window.Cesium.NearFarScalar(20000,1,30000,0),//与相机距离大于30000缩放值为0,(消失)
show:this.state.openOrClose,//初始化如果不设置show,后面就无法通过show来控制label的显示和隐藏;
},
ellipse:{//绘制实体上的圆
semiMajorAxis:this.state.warnDistance,
semiMinorAxis:this.state.warnDistance,
material:window.Cesium.Color.RED.withAlpha(0.5),
show:isHave=='Y'?true:false,
}
});
经过反复测试发现是传入的圆半径引起的问题,传入半径为NAN时就会报错
所以修改为
ellipse:{
semiMajorAxis:this.state.warnDistance||0.001,
semiMinorAxis:this.state.warnDistance||0.001,
material:window.Cesium.Color.RED.withAlpha(0.5),
show:isHave=='Y'?true:false,
}