guonan
2025-04-17 2b4ddd668550749813c4e02b5d5100842763e23b
src/components/tools/Tools.vue
@@ -50,9 +50,21 @@
        class="popup-menu-see"
      />
      <SlopeAnalysis
        @draw="SlopeAnalysiss"
        v-show="showSlope"
        class="popup-menu-see"
        @update-slope="onUpdateSlope"
      />
      <!-- 雨 -->
      <Rain
        v-show="showRain"
        class="popup-menu-see"
        @update-rain="onUpdateRain"
      />
      <Snow
        v-show="showSnow"
        class="popup-menu-see"
        @update-snow="onUpdateSnow"
      />
    </div>
@@ -85,12 +97,13 @@
import Aspect from "@/components/tools/Aspect.vue";
import SlopeAnalysis from "@/components/tools/SlopeAnalysis.vue";
import mapUtils from "@/utils/tools.js";
import Rain from "@/components/tools/Rain.vue";
import Snow from "@/components/tools/Snow.vue";
// 切换展开/收缩状态
function toggleCollapse() {
  // isCollapsed.value = !isCollapsed.value;
}
const showLayerTree = ref(false);
@@ -101,8 +114,8 @@
const isflfx = ref(false);
const isFlood = ref(false);
const isContourLabel = ref(false);
const isRain = ref(false);
const isSnow = ref(false);
const showRain = ref(false);
const showSnow = ref(false);
// 剖面分析弹窗
const topographyShow = ref(false);
@@ -181,6 +194,7 @@
    options: [
      { name: "雨天模式", icon: "雨天模式" },
      { name: "雪天模式", icon: "雪天模式" },
      { name: "清除天气", icon: "清除分析" },
    ],
  },
]);
@@ -197,6 +211,8 @@
    echartsShow.value = false; //剖面echarts
    showAspect.value = false; //坡向箭头
    showSlope.value = false; //坡向箭头
    showRain.value = false; //雨天
    showSnow.value = false; //雨天
    return;
  }
@@ -209,6 +225,8 @@
  echartsShow.value = false; //剖面echarts
  showAspect.value = false; //坡向箭头
  showSlope.value = false; //坡向箭头
  showRain.value = false; //雨天
  showSnow.value = false; //雨天
}
// 处理弹窗选项点击事件
@@ -219,21 +237,25 @@
    显示图层: () => (showLayerTree.value = true),
    隐藏图层: () => (showLayerTree.value = false),
    雨天模式: () => {
      isRain.value = !isRain.value;
      if (isRain.value === false) {
        mapUtils.toggleRain("rain", false);
      } else {
        mapUtils.toggleRain("rain", true);
      }
      showRain.value = true;
      onUpdateRain();
    },
    雪天模式: () => {
      isSnow.value = !isSnow.value;
      if (isSnow.value === false) {
        mapUtils.toggleSnow("snow", false);
      showSnow.value = true;
      onUpdateSnow();
    },
    清除天气: () => {
      if (1) {
        showRain.value = false;
        showSnow.value = false;
        mapUtils.delRain(); // 关闭雨效果
        mapUtils.delSnow(); // 关闭雪效果
        console.log("天气效果已清除");
      } else {
        mapUtils.toggleSnow("snow", true);
        console.log("没有打开的天气效果");
      }
    },
    文字标绘: () => mapUtils.CreateLabel("label", true),
    多段线标绘: () => mapUtils.CreateLabel("polyline", true),
    多边形标绘: () => mapUtils.CreateLabel("polygon", true),
@@ -385,22 +407,51 @@
};
// 关闭坡向箭头
const SlopeArrowClose = () => {
  mapUtils.gbpxjt();
  mapUtils.cleanupAnalysisTools();
};
// 坡度分析
const formData = reactive({
  terrainRender: 0,
  contourLines: false,
  color: "",
  color: "red",
  spacing: 50,
  lineWidth: 5,
});
const SlopeAnalysiss = () => {
  mapUtils.pdfx(formData);
};
// 坡度
const onUpdateSlope = (newOption) => {
  Object.assign(formData, newOption);
  mapUtils.pdfx(formData);
};
// 雨
const rainForm = reactive({
  rainSize: 0.5,
  rainSpeed: 50,
  rainColor: "#99B3CC",
});
const onUpdateRain = (newOption) => {
  console.log(newOption, "new");
  Object.assign(rainForm, newOption);
  mapUtils.toggleRain(rainForm, true);
};
// 雪
const snowForm = reactive({
  snowSize: 0.02, // 默认雪的大小
  snowSpeed: 100, // 默认雪的速度
  snowColor: "#FFFFFF", // 默认雪的颜色
});
const onUpdateSnow = (newOption) => {
  console.log(newOption, "new");
  Object.assign(snowForm, newOption);
  mapUtils.toggleSnow(snowForm, true);
};
</script>
@@ -494,6 +545,7 @@
  right: 60px;
  top: -20px;
}
.sectionChars {
  position: absolute;
  top: auto;