From e346bec51417864656281d2c9cf9c070c4fe8df5 Mon Sep 17 00:00:00 2001 From: kun <1422840143@qq.com> Date: Fri, 17 Nov 2023 19:24:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20BUG=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontLargeScreen/components/flyRoam.vue | 12 ++++- .../frontLargeScreen/components/mapMark.vue | 13 +++++- .../frontLargeScreen/components/myTags.vue | 46 ++++++------------- .../goverment/frontLargeScreen/index.vue | 3 ++ .../largeScreen/components/flyRoam.vue | 12 ++++- .../largeScreen/components/mapMark.vue | 15 ++++-- .../largeScreen/components/myTags.vue | 46 ++++++------------- src/views/goverment/largeScreen/index.vue | 26 ++--------- 8 files changed, 81 insertions(+), 92 deletions(-) diff --git a/src/views/goverment/frontLargeScreen/components/flyRoam.vue b/src/views/goverment/frontLargeScreen/components/flyRoam.vue index f2e13a4..98fb3cb 100644 --- a/src/views/goverment/frontLargeScreen/components/flyRoam.vue +++ b/src/views/goverment/frontLargeScreen/components/flyRoam.vue @@ -139,6 +139,7 @@ const globalStore = GlobalStore(); const tableData = ref([]); const layerJson = ref([]); const clearBool = ref(true); +const initGraphicLength = ref(0); let map: any = props.mapInstance; let graphicLayer: any = props.graphicInstance; let dataIndex = 0 as any; @@ -156,6 +157,7 @@ const getConfig = async () => { layerJson.value = JSON.parse(result.configValue); console.log(layerJson.value); if (layerJson.value.length > 0) { + initGraphicLength.value = layerJson.value.length; layerJson.value.map((item: any, index: number) => { if (item.type == "fixedRoute") { const obj = { @@ -340,8 +342,14 @@ const closeDiv = () => { }; onUnmounted(() => { map = null; - if (clearBool) { - graphicLayer.clear(); + if (clearBool.value) { + let arr = graphicLayer.getGraphics(); + console.log(arr); + for (let i = arr.length - 1; i >= initGraphicLength.value; i--) { + const graphic = graphicLayer.getGraphicById(arr[i].id); + graphic && graphicLayer.removeGraphic(graphic); + } + // graphicLayer.clear(); } }); diff --git a/src/views/goverment/frontLargeScreen/components/mapMark.vue b/src/views/goverment/frontLargeScreen/components/mapMark.vue index 2f043c2..3dff319 100644 --- a/src/views/goverment/frontLargeScreen/components/mapMark.vue +++ b/src/views/goverment/frontLargeScreen/components/mapMark.vue @@ -178,6 +178,7 @@ const viewParams = ref({ }); const infoShow = ref(false); const clearBool = ref(true); +const initGraphicLength = ref(0); let map: any = props.mapInstance; let graphicLayer: any = props.graphicInstance; onMounted(() => {}); @@ -187,6 +188,8 @@ const saveJson = async () => { // ElMessage("当前没有任何数据,无需保存!"); // return; // } + + initGraphicLength.value = graphicLayer.getGraphics().length; clearBool.value = false; emits("saveJson", graphicLayer); }; @@ -470,8 +473,14 @@ const closeDiv = () => { }; onUnmounted(() => { map = null; - if (clearBool) { - graphicLayer.clear(); + if (clearBool.value) { + let arr = graphicLayer.getGraphics(); + console.log(arr); + for (let i = arr.length - 1; i >= initGraphicLength.value; i--) { + const graphic = graphicLayer.getGraphicById(arr[i].id); + graphic && graphicLayer.removeGraphic(graphic); + } + // graphicLayer.clear(); } }); diff --git a/src/views/goverment/frontLargeScreen/components/myTags.vue b/src/views/goverment/frontLargeScreen/components/myTags.vue index ff6acbf..daf235a 100644 --- a/src/views/goverment/frontLargeScreen/components/myTags.vue +++ b/src/views/goverment/frontLargeScreen/components/myTags.vue @@ -49,13 +49,18 @@ const tableData = ref([]); const checkVal = ref(false); const layerJson = ref([]); const clearBool = ref(true); +const initGraphicLength = ref(0); let map: any = props.mapInstance; let graphicLayer: any = props.graphicInstance; let dataIndex = 0; onMounted(() => { graphicLayer?.on(mars3d.EventType.drawCreated, function (event: any) { console.log("矢量对象绘制完成", event); - productTableData(); + + tableData.value.push({ + key: event.graphic.id, + name: getGraphicName(event.graphic) + }); }); bindLayerPopup(); // 在图层上绑定popup,对所有加到这个图层的矢量数据都生效 bindLayerContextMenu(); // 在图层绑定右键菜单,对所有加到这个图层的矢量数据都生效 @@ -72,6 +77,7 @@ const getConfig = async () => { layerJson.value = JSON.parse(result.configValue); console.log(layerJson.value); if (layerJson.value.length > 0) { + initGraphicLength.value = layerJson.value.length; layerJson.value.map((item: any, index: number) => { if (item.type == "point") { const graphic = item; @@ -122,34 +128,6 @@ const getGraphicName = (graphic: any) => { graphic.name = `未命名${dataIndex}`; return `${graphic.type} - ${graphic.name}`; }; -// 生成表格数据 -const productTableData = () => { - console.log(graphicLayer.graphics); - const list = graphicLayer.graphics; - for (let i = list.length - 1; i >= 0; i--) { - const graphic = list[i]; - if (graphic.isPrivate) { - continue; - } - tableData.value.push({ - key: graphic.id, - name: getGraphicName(graphic) - }); - } - // let position = [] as any; - // const graphic = new mars3d.graphic.PointEntity({ - // position: position, - // style: { - // color: "#00ffff", - // pixelSize: 6, - // outlineColor: "#ffffff", - // outlineWidth: 2 - // }, - // attr: { index: dataIndex } - // }); - // graphicLayer.addGraphic(graphic); - // dataIndex++; -}; // 绑定右键菜单 const bindLayerContextMenu = () => { graphicLayer.bindContextMenu([ @@ -254,8 +232,14 @@ const closeDiv = () => { }; onUnmounted(() => { map = null; - if (clearBool) { - graphicLayer.clear(); + if (clearBool.value) { + let arr = graphicLayer.getGraphics(); + console.log(arr); + for (let i = arr.length - 1; i >= initGraphicLength.value; i--) { + const graphic = graphicLayer.getGraphicById(arr[i].id); + graphic && graphicLayer.removeGraphic(graphic); + } + // graphicLayer.clear(); } }); diff --git a/src/views/goverment/frontLargeScreen/index.vue b/src/views/goverment/frontLargeScreen/index.vue index 69bbf3d..18b83e7 100644 --- a/src/views/goverment/frontLargeScreen/index.vue +++ b/src/views/goverment/frontLargeScreen/index.vue @@ -537,6 +537,9 @@ const showMapData = (arr: any) => { }); console.log(newRoutePath); graphicLayer.addGraphic(newRoutePath); + // 启动漫游 + newRoutePath.flyTo(); + newRoutePath.start(); } }); } diff --git a/src/views/goverment/largeScreen/components/flyRoam.vue b/src/views/goverment/largeScreen/components/flyRoam.vue index 64e816d..3447bb3 100644 --- a/src/views/goverment/largeScreen/components/flyRoam.vue +++ b/src/views/goverment/largeScreen/components/flyRoam.vue @@ -139,6 +139,7 @@ const globalStore = GlobalStore(); const tableData = ref([]); const layerJson = ref([]); const clearBool = ref(true); +const initGraphicLength = ref(0); let map: any = props.mapInstance; let graphicLayer: any = props.graphicInstance; let dataIndex = 0 as any; @@ -156,6 +157,7 @@ const getConfig = async () => { layerJson.value = JSON.parse(result.configValue); console.log(layerJson.value); if (layerJson.value.length > 0) { + initGraphicLength.value = layerJson.value.length; layerJson.value.map((item: any, index: number) => { if (item.type == "fixedRoute") { const obj = { @@ -340,8 +342,14 @@ const closeDiv = () => { }; onUnmounted(() => { map = null; - if (clearBool) { - graphicLayer.clear(); + if (clearBool.value) { + let arr = graphicLayer.getGraphics(); + console.log(arr); + for (let i = arr.length - 1; i >= initGraphicLength.value; i--) { + const graphic = graphicLayer.getGraphicById(arr[i].id); + graphic && graphicLayer.removeGraphic(graphic); + } + // graphicLayer.clear(); } }); diff --git a/src/views/goverment/largeScreen/components/mapMark.vue b/src/views/goverment/largeScreen/components/mapMark.vue index 9238671..7a81225 100644 --- a/src/views/goverment/largeScreen/components/mapMark.vue +++ b/src/views/goverment/largeScreen/components/mapMark.vue @@ -178,9 +178,12 @@ const viewParams = ref({ }); const infoShow = ref(false); const clearBool = ref(true); +const initGraphicLength = ref(0); let map: any = props.mapInstance; let graphicLayer: any = props.graphicInstance; -onMounted(() => {}); +onMounted(() => { + initGraphicLength.value = graphicLayer.getGraphics().length; +}); // 保存配置的图上JSON数据 const saveJson = async () => { // if (graphicLayer.length == 0) { @@ -470,8 +473,14 @@ const closeDiv = () => { }; onUnmounted(() => { map = null; - if (clearBool) { - graphicLayer.clear(); + if (clearBool.value) { + let arr = graphicLayer.getGraphics(); + console.log(arr); + for (let i = arr.length - 1; i >= initGraphicLength.value; i--) { + const graphic = graphicLayer.getGraphicById(arr[i].id); + graphic && graphicLayer.removeGraphic(graphic); + } + // graphicLayer.clear(); } }); diff --git a/src/views/goverment/largeScreen/components/myTags.vue b/src/views/goverment/largeScreen/components/myTags.vue index 4fa724a..1f41a5d 100644 --- a/src/views/goverment/largeScreen/components/myTags.vue +++ b/src/views/goverment/largeScreen/components/myTags.vue @@ -49,13 +49,18 @@ const tableData = ref([]); const checkVal = ref(false); const layerJson = ref([]); const clearBool = ref(true); +const initGraphicLength = ref(0); let map: any = props.mapInstance; let graphicLayer: any = props.graphicInstance; let dataIndex = 0; onMounted(() => { graphicLayer?.on(mars3d.EventType.drawCreated, function (event: any) { console.log("矢量对象绘制完成", event); - productTableData(); + + tableData.value.push({ + key: event.graphic.id, + name: getGraphicName(event.graphic) + }); }); bindLayerPopup(); // 在图层上绑定popup,对所有加到这个图层的矢量数据都生效 bindLayerContextMenu(); // 在图层绑定右键菜单,对所有加到这个图层的矢量数据都生效 @@ -72,6 +77,7 @@ const getConfig = async () => { layerJson.value = JSON.parse(result.configValue); console.log(layerJson.value); if (layerJson.value.length > 0) { + initGraphicLength.value = layerJson.value.length; layerJson.value.map((item: any, index: number) => { if (item.type == "point") { const graphic = item; @@ -122,34 +128,6 @@ const getGraphicName = (graphic: any) => { graphic.name = `未命名${dataIndex}`; return `${graphic.type} - ${graphic.name}`; }; -// 生成表格数据 -const productTableData = () => { - console.log(graphicLayer.graphics); - const list = graphicLayer.graphics; - for (let i = list.length - 1; i >= 0; i--) { - const graphic = list[i]; - if (graphic.isPrivate) { - continue; - } - tableData.value.push({ - key: graphic.id, - name: getGraphicName(graphic) - }); - } - // let position = [] as any; - // const graphic = new mars3d.graphic.PointEntity({ - // position: position, - // style: { - // color: "#00ffff", - // pixelSize: 6, - // outlineColor: "#ffffff", - // outlineWidth: 2 - // }, - // attr: { index: dataIndex } - // }); - // graphicLayer.addGraphic(graphic); - // dataIndex++; -}; // 绑定右键菜单 const bindLayerContextMenu = () => { graphicLayer.bindContextMenu([ @@ -254,8 +232,14 @@ const closeDiv = () => { }; onUnmounted(() => { map = null; - if (clearBool) { - graphicLayer.clear(); + if (clearBool.value) { + let arr = graphicLayer.getGraphics(); + console.log(arr); + for (let i = arr.length - 1; i >= initGraphicLength.value; i--) { + const graphic = graphicLayer.getGraphicById(arr[i].id); + graphic && graphicLayer.removeGraphic(graphic); + } + // graphicLayer.clear(); } }); diff --git a/src/views/goverment/largeScreen/index.vue b/src/views/goverment/largeScreen/index.vue index fc9fe7f..8b59ae3 100644 --- a/src/views/goverment/largeScreen/index.vue +++ b/src/views/goverment/largeScreen/index.vue @@ -3,7 +3,7 @@
-