| | |
| | | let viewer = null; |
| | | const active = ref(''); |
| | | let handler = null; |
| | | let labelDiv = null; |
| | | let positionC3 = null; |
| | | const init = () => { |
| | | determineScaling(); |
| | |
| | | }; |
| | | |
| | | const getLabelDom = () => { |
| | | const vNode = h(MapPopUpBox, { data: '参数',removeLabel }); |
| | | const vNode = h(MapPopUpBox, { data: '参数', removeLabel }); |
| | | const tooltipContainer = document.createElement('div'); |
| | | tooltipContainer.id = 'mapPopUpBox'; |
| | | tooltipContainer.style.position = 'absolute'; |
| | | tooltipContainer.style.transform = 'translateY(-50%)'; |
| | | tooltipContainer.style.pointerEvents = 'none'; |
| | |
| | | }; |
| | | |
| | | const labelBox = () => { |
| | | if (!labelDiv) { |
| | | labelDiv = getLabelDom(); |
| | | let dom = document.querySelector('#mapPopUpBox'); |
| | | if (!dom) { |
| | | dom = getLabelDom(); |
| | | } |
| | | const screenPosition = viewer.scene.cartesianToCanvasCoordinates(positionC3); |
| | | if (screenPosition) { |
| | | labelDiv.style.left = `${screenPosition.x}px`; |
| | | labelDiv.style.top = `${screenPosition.y}px`; |
| | | dom.style.left = `${screenPosition.x}px`; |
| | | dom.style.top = `${screenPosition.y}px`; |
| | | dom.style.display = 'block'; |
| | | } |
| | | }; |
| | | |
| | |
| | | if (Cesium.defined(pickedObject) && pickedObject.id) { |
| | | const entity = pickedObject.id; |
| | | positionC3 = entity.position._value; |
| | | viewer.scene.postRender.removeEventListener(labelBox); |
| | | viewer.scene.postRender.addEventListener(labelBox); |
| | | } |
| | | }; |
| | |
| | | }; |
| | | const removeLabel = () => { |
| | | viewer.scene.postRender.removeEventListener(labelBox); |
| | | if (labelDiv && labelDiv.parentNode) { |
| | | labelDiv.parentNode.removeChild(labelDiv); |
| | | labelDiv = null; |
| | | const dom = document.querySelector('#mapPopUpBox'); |
| | | if (dom && dom.parentNode) { |
| | | dom.parentNode.removeChild(dom); |
| | | } |
| | | }; |
| | | |
| | | onUnmounted(() => { |
| | | onBeforeUnmount(() => { |
| | | removeEntities(); |
| | | removeLabel(); |
| | | handler?.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); |
| | | handler?.destroy(); |
| | | }); |
| | | |
| | | onMounted(() => { |