| | |
| | | <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'; |
| | |
| | | const activeSourceType = ref(props.olMap.activeSourceType); |
| | | |
| | | const changeSourceType = (val: GaoDeSourceType) => { |
| | | props.olMap.setSourceUrl(val); |
| | | props.olMap.applySourceType(val); |
| | | }; |
| | | |
| | | const overlayTreeRef = ref<InstanceType<typeof ElTree>>(); |
| | |
| | | }); |
| | | }; |
| | | |
| | | 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(); |
| | | } |
| | | }; |
| | | |
| | |
| | | }; |
| | | const handleCheck = (data: any, node: any) => { |
| | | const checkedKeys = node.checkedKeys; |
| | | isHumanCheckTrigger = true; |
| | | const isVisible = checkedKeys.includes(ROOT_OVERLAY_TYPE.Marker); |
| | | props.olMap.toggleMarkerOverlayVisible(isVisible); |
| | | }; |