68 lines
2.6 KiB
JavaScript
68 lines
2.6 KiB
JavaScript
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 = `
|
||
<div class="bubble-box">
|
||
|
||
<div class="box-wrap" id="bubbleContent">
|
||
<div class="pine"></div>
|
||
<div class="bubble-close" id="popupClose">x</div>
|
||
<div class="area">
|
||
<div class="area-title fontColor">${ data['name']?data['name']:data['名称'] }</div>
|
||
</div>
|
||
<div class="content" >
|
||
${keys.map(item=>{
|
||
return `<div class="data-li">
|
||
<div class="data-label textColor">${item}:</div>
|
||
<div class="data-value">
|
||
<span class="label-num yellowColor">${data[item]}</span>
|
||
</div>
|
||
</div>`
|
||
}).join('')}
|
||
</div>
|
||
</div>
|
||
|
||
<!-- <img src="./layer_border.png" alt="Norway"> -->
|
||
</div>
|
||
`;
|
||
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; |