forked from drone/command-center-dashboard

罗广辉
2025-03-29 7b6b15aa1470dd5fee4fcc6cae0d3902ab3cf85d
fix: 机巢点击交互bug
1 files modified
24 ■■■■■ changed files
src/views/Home/useAggregation.js 24 ●●●●● patch | view | raw | blame | history
src/views/Home/useAggregation.js
@@ -20,7 +20,6 @@
  let viewer = null;
  const active = ref('');
  let handler = null;
  let labelDiv = null;
  let positionC3 = null;
  const init = () => {
    determineScaling();
@@ -128,8 +127,9 @@
  };
  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';
@@ -139,13 +139,15 @@
  };
  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';
    }
  };
@@ -154,6 +156,7 @@
    if (Cesium.defined(pickedObject) && pickedObject.id) {
      const entity = pickedObject.id;
      positionC3 = entity.position._value;
      viewer.scene.postRender.removeEventListener(labelBox);
      viewer.scene.postRender.addEventListener(labelBox);
    }
  };
@@ -164,16 +167,17 @@
  };
  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(() => {