CzRger 1 year ago
parent
commit
8a386f90ee

+ 34 - 22
src/store/modules/gis.ts

@@ -2,7 +2,6 @@ import * as source from "ol/source";
 import * as layer from "ol/layer";
 import * as style from "ol/style";
 import * as ol from "ol";
-import GisDefaultDom from '@/views/gis/map-info/overlay/default/index.vue'
 
 const state = {
   menuRootName: '9cd5fbf9-35fd-4fb2-8c24-1f871afd67be',
@@ -37,7 +36,7 @@ const mutations = {
     state.tempStatistic = data
     console.log(data)
   },
-  SET_GIS_MAP(state, map) {
+  SET_GIS_MAP(state, {map, defaultDom}) {
     state.map = map
     state.gisParams.default.source = new source.Vector()
     state.gisParams.default.layer = new layer.Vector({
@@ -46,23 +45,33 @@ const mutations = {
     })
     state.gisParams.default.layer.set('layerName', 'gisDefault')
     state.map.addLayer(state.gisParams.default.layer)
-    console.log(GisDefaultDom)
-    // state.qyParams.sbOverlay = new ol.Overlay({
-    //   id: 'gisDefalutDom',
-    //   element: GisDefaultDom,
-    //   autoPan: false,
-    //   offset: [0, -60],
-    //   positioning: 'bottom-center',
-    //   stopEvent: true,
-    //   autoPanAnimation: {
-    //     duration: 250
-    //   }
-    // })
-    // state.map.addOverlay(state.qyParams.sbOverlay)
+    state.gisParams.default.overlay = new ol.Overlay({
+      id: 'gisDefaultDom',
+      element: defaultDom.ref_dom,
+      autoPan: false,
+      offset: [0, -60],
+      positioning: 'bottom-center',
+      stopEvent: true,
+      autoPanAnimation: {
+        duration: 250
+      }
+    })
+    state.map.addOverlay(state.gisParams.default.overlay)
   },
-  SET_GIS_PARAMS(state, {key, type}) {
-    if (!state.gisParams[key].layer) {
-
+  SET_GIS_PARAMS_DEFAULT(state, {type, wkt, info}) {
+    if (state.gisParams.default.layer) {
+      state.gisParams.default.source.clear()
+      state.gisParams.default.type = ''
+      state.gisParams.default.info = {}
+      state.gisParams.default.overlay.setPosition(undefined)
+    }
+  },
+  SET_GIS_PARAMS_DEFAULT_RESET(state) {
+    if (state.gisParams.default.layer) {
+      state.gisParams.default.source.clear()
+      state.gisParams.default.type = ''
+      state.gisParams.default.info = {}
+      state.gisParams.default.overlay.setPosition(undefined)
     }
   },
 }
@@ -74,13 +83,16 @@ const actions = {
   LOAD_tempStatistic({ commit }: any, data: any) {
     commit('SET_tempStatistic', data)
   },
-  LOAD_GIS_MAP({ commit }: any, map: any) {
+  LOAD_GIS_MAP({ commit }: any, {map, defaultDom}: any) {
     if (!state.map) {
-      commit('SET_GIS_MAP', map)
+      commit('SET_GIS_MAP', {map, defaultDom})
     }
   },
-  LOAD_GIS_PARAMS({ commit }: any, {key, type}: any) {
-    commit('SET_GIS_PARAMS', {key, type})
+  LOAD_GIS_PARAMS_DEFAULT({ commit }: any, {type, wkt, info}: any) {
+    commit('SET_GIS_PARAMS_DEFAULT', {type, wkt, info})
+  },
+  LOAD_GIS_PARAMS_DEFAULT_RESET({ commit }: any) {
+    commit('SET_GIS_PARAMS_DEFAULT_RESET')
   },
 }
 

+ 12 - 5
src/views/gis/layout/index.vue

@@ -145,6 +145,7 @@
       <div class="play-button __hover" @click="showVideo = true">视频调阅</div>
     </div>
   </div>
+  <GisDefaultDom ref="ref_gisDefault"/>
 </template>
 
 <script lang="ts">
@@ -189,6 +190,7 @@ import V2Table from "./v2-table.vue";
 import {deviceQuery, enterpriseQuery} from "@/api/modules/enterprise";
 import {clearLocationDom} from '@/components/easyMap/func/location'
 import {clearMeasureDom} from '@/components/easyMap/func/measure'
+import GisDefaultDom from '../map-info/overlay/default/index.vue'
 
 export default defineComponent({
   name: '',
@@ -202,7 +204,8 @@ export default defineComponent({
     BaseCom,
     ExampleCom,
     VideoPlayKedaCom,
-    V2Table
+    V2Table,
+    GisDefaultDom
   },
   props: {},
   setup(props, {emit}) {
@@ -255,9 +258,13 @@ export default defineComponent({
       {label: '图例', value: 'example', com: ExampleCom},
     ]
     const ref_search = ref()
+    const ref_gisDefault = ref()
     const mapLoad = (map, func) => {
       state.map = map
-      store.dispatch('gis/LOAD_GIS_MAP', state.map)
+      store.dispatch('gis/LOAD_GIS_MAP', {
+        map: state.map,
+        defaultDom: ref_gisDefault.value
+      })
       state.mapFunc = func
       state.map.on('singleclick', e => {
         let flag = false
@@ -370,7 +377,7 @@ export default defineComponent({
           const features: any = []
           res.datas.forEach(v => {
             try {
-              const feat: any = new format.WKT().readFeature(`POINT(${v.longitude} ${v.latitude})`)
+              const feat: rany = new format.WKT().readFeature(`POINT(${v.longitude} ${v.latitude})`)
               let type = ''
               if (v.qykx === '零关税自用进口生产设备') {
                 tempStatistic.lgszyjkscsb += 1
@@ -462,7 +469,6 @@ export default defineComponent({
             }
           })
           state.map.addOverlay(state.qyParams.overlay)
-          console.log(ref_sbDom.value)
           //  详情
           state.qyParams.sbOverlay = new ol.Overlay({
             id: v4(),
@@ -637,7 +643,8 @@ export default defineComponent({
       setCircle,
       onRadiusSubmit,
       onRadiusReset,
-      ref_sbDom
+      ref_sbDom,
+      ref_gisDefault
     }
   },
 })

+ 7 - 3
src/views/gis/map-info/overlay/default/index.vue

@@ -1,6 +1,8 @@
 <template>
-  <div class="gis-overlay-default">
-    <Component :is="comCpt.com"/>
+  <div ref="ref_dom" class="gis-overlay-default">
+    <template v-if="comCpt?.com">
+      <Component :is="comCpt.com"/>
+    </template>
   </div>
 </template>
 
@@ -41,11 +43,13 @@ export default defineComponent({
     const comCpt = computed(() => {
       return state.comps.filter(v => v.value === store.state.gis.gisParams.default.type)?.[0]
     })
+    const ref_dom = ref()
     onMounted(() => {
     })
     return {
       ...toRefs(state),
-      comCpt
+      comCpt,
+      ref_dom
     }
   },
 })