cesium报错Invalid array length

报错截图

前情提要:在项目中需要以实体为中心指定半径绘制圆,测试时发现会不定时的报上面的错误,然后实体就停止渲染了

实体渲染代码如下:

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,

}

你可能感兴趣的:(cesium报错Invalid array length)