class Bubble { constructor(val) { this.viewer = val.viewer; this.div = document.createElement("div"); } addDynamicLabel(data,cartesian3) { let div = this.div; div.id = data.id; // div.style.display="inline" div.style.position = "absolute"; div.style.minWidth = "380px"; div.style.height = "auto"; let keys = Object.keys(data); // 构建属性面板 let HTMLTable = `
x
${ data['name']?data['name']:data['名称'] }
${keys.map(item=>{ return `
${item}:
${data[item]}
` }).join('')}
`; div.innerHTML = HTMLTable; this.viewer.cesiumWidget.container.appendChild(div); document .getElementById("popupClose") .addEventListener("click", () => { this.clearDiv(); }); let gisPosition = cartesian3; this.handler = this.viewer.scene.postRender.addEventListener(() => { const canvasHeight = this.viewer.scene.canvas.height; const windowPosition = Cesium.SceneTransforms.wgs84ToWindowCoordinates( this.viewer.scene, gisPosition ); let content = document.getElementById("bubbleContent"); let height = content?content.clientHeight:220; div.style.bottom = canvasHeight - windowPosition.y + height + Math.sin(Math.PI/180*45)*60+ "px"; const elWidth = div.offsetWidth; div.style.left = windowPosition.x - elWidth / 2 + 190 + "px"; }, this); } clearDiv() { if (this.div && this.div.parentElement) { var parent = this.div.parentElement; parent.removeChild(this.div); this.handler&&this.handler(); } } } export default Bubble;