You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
GCSGUI/src/utils/map/geometry/textLabel.ts

86 lines
2.4 KiB
TypeScript

/*
* @Author: cbwu 504-wuchengbo@htsdfp.com
* @Date: 2024-04-16 18:59:56
* @LastEditors: cbwu
* @LastEditTime: 2024-04-22 09:11:33
* @Description:
*/
import {
Cartesian3,
Entity,
Color,
Viewer,
Cartesian2,
HorizontalOrigin,
VerticalOrigin,
HeightReference,
} from 'cesium'
/**
2024/4/16 11:44
Zhaipeixiu
*/
export type textLabelOptions = {
showBackground?: boolean //显示背景
backgroundColor?: Color //背景色
backgroundPadding?: any //padding值
fillColor: Color
horizontalOrigin?: any //水平对齐方式
verticalOrigin?: any //竖直对齐方式
outlineColor?: any
outlineWidth?: any
}
export class TextLabel {
_viewer: Viewer | undefined = undefined
_defaultStyle: textLabelOptions = {
showBackground: true, //显示背景
backgroundColor: Color.BLACK, //背景色
backgroundPadding: new Cartesian2(10, 10), //padding值
fillColor: Color.WHITE,
outlineColor: Color.WHITESMOKE,
outlineWidth: 1.0,
horizontalOrigin: HorizontalOrigin.CENTER, //对齐方式
verticalOrigin: VerticalOrigin.CENTER,
}
_cesiumLabel: Entity | undefined = undefined
// 构造函数新建label并显示
constructor(
viewer: Viewer,
position: Cartesian3,
text: string,
options?: textLabelOptions,
) {
this._viewer = viewer
this._defaultStyle = { ...this._defaultStyle, ...options }
this._cesiumLabel = new Entity({
position: position,
name: 'default',
label: {
text: text,
scale: 0.6,
pixelOffset: new Cartesian2(20, -20),
showBackground: this._defaultStyle.showBackground, //显示背景
backgroundColor: this._defaultStyle.backgroundColor, //背景色
backgroundPadding: this._defaultStyle.backgroundPadding, //padding值
fillColor: this._defaultStyle.fillColor,
outlineColor: this._defaultStyle.outlineColor,
outlineWidth: this._defaultStyle.outlineWidth,
horizontalOrigin: this._defaultStyle.horizontalOrigin, //对齐方式
verticalOrigin: this._defaultStyle.verticalOrigin,
heightReference: HeightReference.CLAMP_TO_GROUND,
},
})
this._viewer.entities.add(this._cesiumLabel)
}
//移除label
public remove() {
if (this._cesiumLabel !== undefined && this._viewer !== null)
this._viewer.entities.remove(this._cesiumLabel)
}
}