wujingjing
2025-01-19 6d279e10194646139fb63bf8fddded84dfbc4777
src/components/chat/chatComponents/summaryCom/components/recordSetTable/map/LayerControl.vue
@@ -76,7 +76,7 @@
<script setup lang="ts">
import { Close } from '@element-plus/icons-vue';
import { ElTree } from 'element-plus';
import { onMounted, ref, watch } from 'vue';
import { computed, onMounted, ref, watch } from 'vue';
import { useDrag } from '/@/hooks/useDrag';
import type { OLMap } from '/@/model/map/OLMap';
import { GaoDeSourceType, gaoDeSourceTypeMap, OverlayType } from '/@/model/map/OLMap';
@@ -100,7 +100,7 @@
const activeSourceType = ref(props.olMap.activeSourceType);
const changeSourceType = (val: GaoDeSourceType) => {
   props.olMap.setSourceUrl(val);
   props.olMap.applySourceType(val);
};
const overlayTreeRef = ref<InstanceType<typeof ElTree>>();
@@ -120,15 +120,31 @@
   });
};
const setTreeChecked = (checked: boolean) => {
   treeData.value.forEach((item) => {
      if (checked) {
         overlayTreeRef.value?.setCheckedKeys([ROOT_OVERLAY_TYPE.Marker]);
      } else {
         overlayTreeRef.value?.setCheckedKeys([]);
      }
   });
};
let isHumanCheckTrigger = false;
watch(
   () => props.olMap.markerIsVisible.value,
   (val) => {
      if (isHumanCheckTrigger) {
         isHumanCheckTrigger = false;
         return;
      }
      setTreeChecked(val);
   }
);
const handleNodeClick = (data: any, node: any) => {
   if (data.id === ROOT_OVERLAY_TYPE.Marker) {
      const overlays = props.olMap.map.getOverlays().getArray();
      const filteredOverlays = overlays.filter((overlay) => {
         const type = overlay.get('type');
         return type === OverlayType.Marker;
      });
      props.olMap.adjustViewToOverlays(filteredOverlays);
      props.olMap.adjustViewToMarkers();
   }
};
@@ -152,6 +168,7 @@
};
const handleCheck = (data: any, node: any) => {
   const checkedKeys = node.checkedKeys;
   isHumanCheckTrigger = true;
   const isVisible = checkedKeys.includes(ROOT_OVERLAY_TYPE.Marker);
   props.olMap.toggleMarkerOverlayVisible(isVisible);
};