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,
}
});
有用的给个赞吧!