Pārlūkot izejas kodu

测量标绘区分校验

CzRger 1 gadu atpakaļ
vecāks
revīzija
501619669e

+ 4 - 1
src/components/easyMap/func/measure.ts

@@ -14,6 +14,7 @@ import {createBox} from "ol/interaction/Draw";
 import {Circle, LineString, Polygon} from "ol/geom";
 import {locationTooltipElement} from "@/components/easyMap/func/location";
 import {v4} from "uuid";
+import store from "@/store";
 
 const layerFlag = ['layerName', 'measureLayer']
 let measureTooltipElement;
@@ -33,7 +34,8 @@ const typeMapper = new Map([
  * @param typeSelect    line线,rectangle矩形,polygon多边形,circle圆形
  */
 export default function Measure (map, typeSelect) {
-    if (!measureTooltipElement) {
+    if (!measureTooltipElement && !store.state.gis.isTooling) {
+        store.commit('gis/SET_IS_TOOLING', true)
         let _source
         const realLayer = map.getLayers().getArray().filter(v => v.get(layerFlag[0]) === layerFlag[1])
         if (realLayer[0]) {
@@ -243,6 +245,7 @@ export default function Measure (map, typeSelect) {
                 draw.un('drawend', drawendHandle);
                 map.removeInteraction(map.getInteractions().getArray().filter(v => v.get(id) === id)[0]);
                 map.un('pointermove', pointerMoveHandler)
+                store.commit('gis/SET_IS_TOOLING', false)
             }
             draw.on('drawend', drawendHandle);
         }

+ 1 - 1
src/components/easyMap/initMapInfo.ts

@@ -9,7 +9,7 @@ import WXTImg from './images/bg-wxt.png'
 // @ts-ignore
 import HYSImg from './images/bg-hys.png'
 import store from '@/store/index'
-
+// @ts-ignore
 const isInternet = window.cusConfig?.mapInternet
 
 const baseMapView = {

+ 4 - 0
src/store/modules/gis.ts

@@ -1,5 +1,6 @@
 const state = {
   menuRootName: '9cd5fbf9-35fd-4fb2-8c24-1f871afd67be',
+  isTooling: false,
   map: null,
   activeQyId: null,
   gisLayer: null,
@@ -15,6 +16,9 @@ const mutations = {
   },
   SET_ACTIVE_QY_ID(state, id) {
     state.activeQyId = id
+  },
+  SET_IS_TOOLING(state, flag) {
+    state.isTooling = flag
   }
 }
 

+ 4 - 1
src/views/gis/layout/tools/tool-draw.ts

@@ -11,6 +11,7 @@ import {isValue} from "@/utils/util";
 // @ts-ignore
 import PointIcon from "@/assets/images/gis-layout/gis-layout-tools_tool-bz_icon.png"
 import {v4} from "uuid";
+import store from "@/store";
 
 const globalLineDash = [
     [0, 0], //实线
@@ -164,7 +165,8 @@ export const draw = (map, obj) => {
                 map.removeInteraction(oldModify[0])
             }
         }
-        if (!toolDrawTooltipElement) {
+        if (!toolDrawTooltipElement && !store.state.gis.isTooling) {
+            store.commit('gis/SET_IS_TOOLING', true)
             // reset()
             let _source
             const realLayer = map.getLayers().getArray().filter(v => v.get(layerFlag[0]) === layerFlag[1])
@@ -348,6 +350,7 @@ export const draw = (map, obj) => {
                         featEnd.set('isInit', true)
                         featEnd.set(layerFlag[0], layerFlag[1])
                         featEnd.setId(v4())
+                        store.commit('gis/SET_IS_TOOLING', false)
                     }
                     draw.on('drawend', drawendHandle);
                 }

+ 5 - 0
src/views/gis/layout/tools/tool.vue

@@ -49,6 +49,7 @@ import {ElMessage, ElMessageBox} from "element-plus";
 import './map.scss'
 import * as ToolDraw from './tool-draw'
 import * as ol from "ol";
+import store from "@/store";
 
 export default defineComponent({
   name: '',
@@ -89,12 +90,14 @@ export default defineComponent({
         if (feat) {
           l.getSource().removeFeature(feat)
           state.tempUUID = ''
+          state.closeOverlay.getElement().style.display = 'none'
           state.closeOverlay.setPosition(undefined)
           ToolDraw.refreshModify(props.map, l.getSource())
         }
       }
     }
     onMounted(() => {
+      store.commit('gis/SET_IS_TOOLING', false)
       const id = 'toolOverlay'
       if (props.map?.getOverlayById(id)) {
         state.closeOverlay = props.map?.getOverlayById(id)
@@ -118,6 +121,7 @@ export default defineComponent({
               flag = true
               if (state.tempUUID !== f.getId()) {
                 state.tempUUID = f.getId()
+                state.closeOverlay.getElement().style.display = 'unset'
                 state.closeOverlay.setPosition(e.coordinate)
               } else {
                 state.tempUUID = ''
@@ -163,5 +167,6 @@ export default defineComponent({
 .close-dom {
   width: 16px;
   height: 16px;
+  display: none;
 }
 </style>