cesium给线段添加标注

要求:给空间线段添加描述,(百度搜索全是通过图标的方法)。

先贴上图片:

 

 

 

 

思路:在生成线段的实体内取得该线段所有定位(postion)取其中心点,在该点添加一个 point实体对其添加文字描述。

代码:

var startPt = Cesium.Cartesian3.fromDegrees(coordData[0], coordData[1], coordData[2]);//线的开始 x y z 经度 纬度 高度
var endPt = Cesium.Cartesian3.fromDegrees(coordData[3], coordData[4], coordData[5]);//线的结束
var curLinePointsArr = generateCurve(startPt, endPt);

 

function generateCurve(startPoint, endPoint) {
    var addPointCartesian = new Cesium.Cartesian3();
    Cesium.Cartesian3.add(startPoint, endPoint, addPointCartesian);
    var midPointCartesian = new Cesium.Cartesian3();
    Cesium.Cartesian3.divideByScalar(addPointCartesian, 2, midPointCartesian);
    var midPointCartographic = Cesium.Cartographic.fromCartesian(midPointCartesian);
    midPointCartographic.height = Cesium.Cartesian3.distance(startPoint, endPoint) / 10;
    var midPoint = new Cesium.Cartesian3();
    Cesium.Ellipsoid.WGS84.cartographicToCartesian(midPointCartographic, midPoint);
    var spline = new Cesium.LinearSpline({
        times: [0.0, 1.0],
        points: [startPoint, endPoint]
    });
    var curvePointsArr = [];
    for (var i = 0, len = 300; i < len; i++) {
        curvePointsArr.push(spline.evaluate(i / len));
    }
    return curvePointsArr;
}

 

 

link = viewer.entities.add({      // 线
    description: 'background-line',
    polyline: {
        width: 6,
        positions: curLinePointsArr,  //线定位
        material: Cesium.Color.fromCssColorString(colorData[0])
    }
});

//取线postions集合,取其1/2处的postion
var position = link._polyline._positions._value[link._polyline._positions._value.length/2];

//生成点
let point = viewer.entities.add({   //
    position:position,
    point: {
        pixelSize: 1,   //设置小点  基本看不见
        color: new Cesium.Color(0.0, 0.0, 0.0, 0.0)  //颜色设置透明
    },
    label: {
        text:'aaa',    //描述内容
        font: '30px Sans-Serif',   //字体大小 类型
        fillColor: Cesium.Color.RED,  //颜色
        outlineColor: Cesium.Color.GOLD,
        style: Cesium.LabelStyle.CENTER_LABEL,
        // 垂直位置
        verticalOrigin: Cesium.VerticalOrigin.BUTTON,
        // 中心位置
        pixelOffset: new Cesium.Cartesian2(0, -10),
        //设置背景颜色透明  
        backgroundColor: new Cesium.Color(0.0, 0.0, 0.0, 0.0),
        //打开背景  打开背景 (不会被线段覆盖)
        showBackground: true,
    }
});

有用的给个赞吧!  

posted @ 2020-09-30 14:19  我等你,你等风来  阅读(4862)  评论(0编辑  收藏  举报