浏览代码

Merge branch 'dev' into dev-2.0

# Conflicts:
#	src/main/java/com/sooka/sponest/data/SookaDataApplication.java
lyq 1 年之前
父节点
当前提交
8960edf8b1

+ 12 - 2
data-ui/src/api/components/supermap.js

@@ -1,4 +1,5 @@
 import request from '../../utils/request'
 import request from '../../utils/request'
+import Cookies from 'js-cookie'
 
 
 export function getSuperMap(codes) {
 export function getSuperMap(codes) {
     return request({
     return request({
@@ -7,8 +8,17 @@ export function getSuperMap(codes) {
     })
     })
 }
 }
 
 
-
-
+// 获取地图配置
+export function queryMap(state,deptId) {
+  return request({
+    url: '/system/sysMenuVisuMap/queryMap',
+    method: 'post',
+    data: {
+      visuId: state,
+      deptId
+    }
+  })
+}
 
 
 
 
 export const iconList={
 export const iconList={

+ 0 - 791
data-ui/src/views/components/supermap-2.5d-multiple.vue

@@ -1,791 +0,0 @@
-<template>
-  <div id="cesiumContainer" style="width: 100%; height: 100%;background: none;">
-  </div>
-</template>
-
-<script>
-  import {
-    iconList,
-    getDeviceList
-  } from '@/api/components/supermap.js'
-  import {
-    getConfigKey
-  } from '@/api/system/config'
-  import Cookies from 'js-cookie'
-
-  export default {
-    name: 'supermap-2.5d',
-    data() {
-      return {
-        chooseMode: [
-          Cesium.DrawMode.Line,
-          Cesium.DrawMode.Polygon,
-        ],
-        markerList: [],
-        bindPopupHtml: null,
-        mapshow: false,
-        superMapRootUrl: null,
-        layerList: [],
-        viewer: null,
-        scene: null,
-        handler: null,
-        pick: null,
-        back_position: null,
-        type: null,
-        content: null,
-        mvtMap0: null,
-        shuixi_name: null,
-        mvtMap1: null,
-        mvtMap2: null,
-        mvtMap3: null,
-        road_name: null,
-        layer_xiangzhenjie_name: null,
-        markerboxEntity: [],//地图落点实体
-        connectBoxEntity: null,//地图线实体
-        graphicsBoxEntity: null,//地图面实体
-        markerboxEntityRadius: [],//地图落点实体
-        connectBoxEntityTwo: null,//地图线实体
-        /*************************原地图属性*********************/
-        isEditableLayers: false, //绘图控件
-
-        /*************************原地图属性*********************/
-        aac: null,
-        queryParams: {
-          name: null,
-          mapData: null,
-          mapName: null
-        },
-      }
-    },
-    watch: {},
-    created() {
-    },
-    mounted() {
-      // this.superMapInfo();
-    },
-    props: {
-      putSmUserID_layer: null,
-    },
-    methods: {
-      superMapInfo(type, obj,NB) {
-        getConfigKey('superMap.iServer').then(response => {
-          this.superMapRootUrl = response.msg;
-          this.onload(type, obj,NB);
-        })
-      },
-      //清除所有
-      clearAll() {
-        this.viewer.entities.removeAll()
-      },
-      //移除之前添加的点
-      clearMRadius() {
-        if (this.markerboxEntityRadius != null && this.markerboxEntityRadius.length > 0) {
-          for (let i = 0; i < this.markerboxEntityRadius.length; i++) {
-            this.viewer.entities.remove(this.markerboxEntityRadius[i])
-          }
-          this.markerboxEntityRadius = []
-        }
-      },
-      //移除之前添加的线
-      clearTwoC() {
-        if (this.connectBoxEntityTwo != null) {
-          this.viewer.entities.remove(this.connectBoxEntityTwo)
-          this.connectBoxEntityTwo = null
-        }
-      },
-      /**
-       * 地图落点-覆盖范围
-       */
-      setMarkersRadius(makerList) {
-        let that = this
-        that.handler = new Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas)
-        for (let i in makerList) {
-          let longitude = makerList[i].lng;
-          let latitude = makerList[i].lat;
-          let marker = that.viewer.entities.add({
-            name: "",
-            position: Cesium.Cartesian3.fromDegrees(longitude, latitude),
-            billboard: {
-              image: iconList[makerList[i].icon],
-              width: 48,
-              height: 48,
-              heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
-              disableDepthTestDistance: Number.POSITIVE_INFINITY
-            },
-            description: makerList[i].bindPopupHtml,
-            click: makerList[i].click,
-            parameter: makerList[i].parameter
-          })
-          that.markerboxEntityRadius.push(marker)
-          //绘制摄像头的圈(覆盖范围)
-          let markerRadius = that.viewer.entities.add({
-            position: Cesium.Cartesian3.fromDegrees(makerList[i].lng, makerList[i].lat, 2),
-            ellipse: {
-              semiMinorAxis: makerList[i].radius,
-              semiMajorAxis: makerList[i].radius,
-              height: 0.0,
-              material: Cesium.Color.DODGERBLUE.withAlpha(0.4),
-              outline: true,
-              outlineColor: Cesium.Color.DEEPSKYBLUE.withAlpha(1),
-              outlineWidth: 1,
-            },
-          });
-          that.markerboxEntityRadius.push(markerRadius)
-        }
-        that.viewer.scene.globe.depthTestAgainstTerrain = false
-        that.createLeftClickDescription()
-        that.createRightClickDescription()
-      },
-      /**
-       * 地图画线(贴地)
-       */
-      setConnectTwoList(connectList, color, withAlpha) {
-        let that = this
-        //Cesium.Color.fromCssColorString('#67ADDF')   16进制颜色设置
-        let material = Cesium.Color.fromCssColorString(color).withAlpha(withAlpha);
-        that.connectBoxEntityTwo = that.viewer.entities.add({
-          Type: 'Polyline',
-          polyline: {
-            positions: Cesium.Cartesian3.fromDegreesArray(connectList),
-            clampToGround: true,//贴地 true,不贴地  false
-            width: 5,
-            material: material
-          }
-        })
-      },
-      //移除之前添加的点
-      clearM() {
-        if (this.markerboxEntity != null && this.markerboxEntity.length > 0) {
-          for (let i = 0; i < this.markerboxEntity.length; i++) {
-            this.viewer.entities.remove(this.markerboxEntity[i])
-          }
-          this.markerboxEntity = []
-        }
-      },
-      clearAllByQin(val) {
-
-        this.viewer.entities.removeAll();
-        this.entityHandler(val-2)
-      },
-      //移除之前添加的线
-      clearC() {
-        if (this.connectBoxEntity != null) {
-          this.viewer.entities.remove(this.connectBoxEntity)
-          this.connectBoxEntity = null
-        }
-      },
-      //移除之前添加的面
-      clearG() {
-        if (this.graphicsBoxEntity != null) {
-          this.viewer.entities.remove(this.graphicsBoxEntity)
-          this.graphicsBoxEntity = null
-        }
-      },
-      reload(list) {
-        this.removeAll();
-        this.layerList = list;
-        for (let i = 0; i < this.layerList.length; i++) {
-          if (this.layerList[i] == "lindi") {
-            this.loadLindi();
-          } else if (this.layerList[i] == "shuixi") {
-            this.loadShuixi();
-          } else if (this.layerList[i] == "road") {
-            this.loadRoad();
-          } else if (this.layerList[i] == "nongtian") {
-            this.loadNongtian();
-          }
-        }
-      },
-      loadShuixi() {//水系
-        let that = this;
-        if (that.mvtMap0 != null) {
-          that.mvtMap0.show = true;
-          that.shuixi_name.then(function (layers) {
-            let textlayer = that.viewer.scene.layers.find('ShuiXi@SiPing#1');//文字图层
-            textlayer.visible = true;
-          });
-        }
-      },
-      loadLindi() {//林地
-        if (this.mvtMap1 != null) {
-          this.mvtMap1.show = true;
-        }
-      },
-      loadNongtian() {//农田
-        if (this.mvtMap2 != null) {
-          this.mvtMap2.show = true;
-        }
-      },
-      loadRoad() {//路网
-        let that = this;
-        if (that.mvtMap3 != null) {
-          that.mvtMap3.show = true;
-          that.road_name.then(function (layers) {
-            let provinceRoad_textLayer = that.viewer.scene.layers.find('ProvinceRoad_L@SiPing#1');//文字图层
-            let countyRoad_textLayer = that.viewer.scene.layers.find('CountyRoad_L@SiPing#1');//文字图层
-            let stateRoad_textLayer = that.viewer.scene.layers.find('StateRoad_L@SiPing#1');//文字图层
-            provinceRoad_textLayer.visible = true;
-            countyRoad_textLayer.visible = true;
-            stateRoad_textLayer.visible = true;
-          });
-        }
-      },
-      removeAll() {
-        let that = this;
-        // 移除方法,暂存:this.viewer.scene.removeVectorTilesMap(this.mvtMap3.name);
-        if (that.mvtMap0 != null) {
-          that.mvtMap0.show = false;
-          //that
-          that.shuixi_name.then(function (layers) {
-            let textlayer = that.viewer.scene.layers.find('ShuiXi@SiPing#1');//文字图层
-            textlayer.visible = false;
-          });
-        }
-        if (that.mvtMap1 != null) {
-          that.mvtMap1.show = false
-        }
-        if (that.mvtMap2 != null) {
-          that.mvtMap2.show = false
-        }
-        if (that.mvtMap3 != null) {
-          that.mvtMap3.show = false
-
-          //NAME隐藏
-          that.road_name.then(function (layers) {
-            let provinceRoad_textLayer = that.viewer.scene.layers.find('ProvinceRoad_L@SiPing#1');//文字图层
-            let countyRoad_textLayer = that.viewer.scene.layers.find('CountyRoad_L@SiPing#1');//文字图层
-            let stateRoad_textLayer = that.viewer.scene.layers.find('StateRoad_L@SiPing#1');//文字图层
-            provinceRoad_textLayer.visible = false;
-            countyRoad_textLayer.visible = false;
-            stateRoad_textLayer.visible = false;
-          });
-        }
-      },
-      onload(type, obj,NB) {
-        let that = this;
-        //1.添加地形数据
-        that.viewer = new Cesium.Viewer('cesiumContainer', {
-          //创建地形服务提供者的实例,url为SuperMap iServer发布的TIN地形服务
-          terrainProvider: new Cesium.CesiumTerrainProvider({
-            url: that.superMapRootUrl + "/3D-sipingchangjing/rest/realspace/datas/dem@spyx4326",
-            //isSct : false,//地形服务源自SuperMap iServer发布时需设置isSct为true
-            invisibility: true
-          }),
-          infoBox: false,
-          navigation: false
-        }, {
-          contextOptions: {
-            msaaLevel: 4,
-            requestWebgl2: true
-          },
-          orderIndependentTranslucency: false
-        });
-        let scene = that.viewer.scene;
-        that.viewer.cesiumWidget.creditContainer.style.display = "none" // 去掉超图logo水印
-
-        //2.添加SuperMap iServer发布的影像服务
-        let layer = that.viewer.imageryLayers.addImageryProvider(new Cesium.SuperMapImageryProvider({
-          url: that.superMapRootUrl + "/3D-sipingchangjing/rest/realspace/datas/siping_2m@spyx4326",
-        }));
-
-        //3.添加SuperMap 建筑场景
-        let aaaa = that.superMapRootUrl + "/3D-local3DCache-Data3/rest/realspace";
-        scene.open(aaaa);
-
-        //飞行值坐标点,每3秒推进一级
-        //heading-代表镜头左右方向,正值为右,负值为左
-        //pitch-代表镜头上下方向,正值为上,负值为下.
-        //roll-代表镜头左右倾斜,正值,向右倾斜,负值向左倾斜
-        setTimeout(function () {
-          that.viewer.camera.flyTo({
-            destination: Cesium.Cartesian3.fromDegrees(124.49980650138238, 43.428263986216815, 950000),
-            orientation: {
-              // heading :  Cesium.Math.toRadians(346.4202942851978),
-              // pitch : Cesium.Math.toRadians(-56.74026687972041),
-              // roll : Cesium.Math.toRadians(0)
-            }
-          });
-
-        }, 3000);
-        setTimeout(function () {
-          that.viewer.camera.flyTo({
-            destination: Cesium.Cartesian3.fromDegrees(124.49980650138238, 43.428263986216815, 650000),
-            orientation: {
-              // heading :  Cesium.Math.toRadians(346.4202942851978),
-              // pitch : Cesium.Math.toRadians(-56.74026687972041),
-              // roll : Cesium.Math.toRadians(0)
-            }
-          });
-
-        }, 3000);
-        setTimeout(function () {
-          that.viewer.camera.flyTo({
-            destination: Cesium.Cartesian3.fromDegrees(124.49980650138238, 43.428263986216815, 350000),
-            orientation: {
-              // heading :  Cesium.Math.toRadians(346.4202942851978),
-              // pitch : Cesium.Math.toRadians(-56.74026687972041),
-              // roll : Cesium.Math.toRadians(0)
-            }
-          });
-
-        }, 3000);
-
-        //开始加载专题图等数据,8秒后开始执行
-        setTimeout(function () {
-          //3.水系
-          let shuixi = that.superMapRootUrl + "/map-mvt-shuixiMian/restjsr/v1/vectortile/maps/shuixi_Mian";
-          that.mvtMap0 = scene.addVectorTilesMap({
-            url: shuixi,
-            canvasWidth: 512,
-            name: 'mvt_map0',
-            viewer: that.viewer
-          });
-          that.mvtMap0.selectedColor = new Cesium.Color(6, 169, 254, 0.5);
-          that.mvtMap0.show = false;
-
-          //4.林地
-          let lindi = that.superMapRootUrl + "/map-mvt-lindi/restjsr/v1/vectortile/maps/lindi";
-          that.mvtMap1 = scene.addVectorTilesMap({
-            url: lindi,
-            canvasWidth: 512,
-            name: 'mvt_map1',
-            viewer: that.viewer
-          });
-          that.mvtMap1.selectedColor = new Cesium.Color(6, 254, 181, 0.5);
-          that.mvtMap1.show = false;
-
-          //5.农田
-          let nongtian = that.superMapRootUrl + "/map-mvt-nongtian/restjsr/v1/vectortile/maps/nongtian";
-          that.mvtMap2 = scene.addVectorTilesMap({
-            url: nongtian,
-            canvasWidth: 512,
-            name: 'mvt_map2',
-            viewer: that.viewer
-          });
-          that.mvtMap2.selectedColor = new Cesium.Color(250, 236, 246, 1.0);
-          that.mvtMap2.show = false;
-
-          //6.路网
-          let road = that.superMapRootUrl + "/map-mvt-roadXian/restjsr/v1/vectortile/maps/road_Xian";
-          that.mvtMap3 = scene.addVectorTilesMap({
-            url: road,
-            canvasWidth: 512,
-            name: 'mvt_map3',
-            viewer: that.viewer
-          });
-          that.mvtMap3.show = false;
-
-          //7.添加路网NAME
-          let road_name_url = that.superMapRootUrl + '/3D-road_Name_S/rest/realspace';
-          that.road_name = scene.open(road_name_url);
-
-          that.road_name.then(function (layers) {
-            let provinceRoad_textLayer = scene.layers.find('ProvinceRoad_L@SiPing#1');//文字图层
-            let countyRoad_textLayer = scene.layers.find('CountyRoad_L@SiPing#1');//文字图层
-            let stateRoad_textLayer = scene.layers.find('StateRoad_L@SiPing#1');//文字图层
-            //加载后隐藏
-            provinceRoad_textLayer.visible = false;
-            countyRoad_textLayer.visible = false;
-            stateRoad_textLayer.visible = false;
-            //关闭避让
-            provinceRoad_textLayer.isOverlapDisplayed = true;
-            countyRoad_textLayer.isOverlapDisplayed = true;
-            stateRoad_textLayer.isOverlapDisplayed = true;
-          });
-          // 8.添加水系NAME
-          let shuixi_name_url = that.superMapRootUrl + '/3D-shuixi_Name/rest/realspace';
-          that.shuixi_name = scene.open(shuixi_name_url);
-          that.shuixi_name.then(function (layers) {
-            let textlayer = scene.layers.find('ShuiXi@SiPing#1');//文字图层
-            //加载后隐藏
-            textlayer.visible = false;
-            //关闭避让
-            textlayer.isOverlapDisplayed = true;
-          });
-
-          //9.添加县界和乡镇界
-          let layer_xianjie = that.viewer.imageryLayers.addImageryProvider(new Cesium.SuperMapImageryProvider({
-            url: that.superMapRootUrl + "/map-SIPING/rest/maps/XianJie_XiangZhenJie",
-          }));
-
-          //10.添加区县乡镇村名称
-          let layer_xiangzhenjie_name = that.superMapRootUrl + '/3D-Name_he/rest/realspace';
-          scene.open(layer_xiangzhenjie_name);
-          that.road_name.then(function (layers) {
-            let xianJie_textLayer = scene.layers.find('XianJie@SiPing#1');//区县文字图层
-            let xiangZhenJie_textLayer = scene.layers.find('XiangZhenJie@SiPing#2');//乡镇文字图层
-            let cun_textLayer = scene.layers.find('Cun@SiPing#1');//村文字图层
-            //关闭避让
-            xianJie_textLayer.isOverlapDisplayed = true;
-            xiangZhenJie_textLayer.isOverlapDisplayed = true;
-            cun_textLayer.isOverlapDisplayed = true;
-          });
-
-          // //9.添加乡镇界
-          // let layer_xiangzhenjie = that.viewer.imageryLayers.addImageryProvider(new Cesium.SuperMapImageryProvider({
-          //   url : that.superMapRootUrl+"/map-SIPING/rest/maps/XiangZhenJie",
-          // }));
-          //
-          // //10.添加县界
-          // let layer_xianjie = that.viewer.imageryLayers.addImageryProvider(new Cesium.SuperMapImageryProvider({
-          //   url : that.superMapRootUrl+"/map-SIPING/rest/maps/XianJie",
-          // }));
-
-          // //11.添加县界名称 此处要先添加县界名称 否则县界名会不显示
-          // let layer_xianjie_name = that.superMapRootUrl+'/3D-XianJie_Name/rest/realspace';
-          // scene.open(layer_xianjie_name);
-          //
-          // //12.添加乡镇界名称
-          // let layer_xiangzhenjie_name = that.superMapRootUrl+'/3D-XiangZhenJie_Name/rest/realspace';
-          // scene.open(layer_xiangzhenjie_name);
-
-        }, 3000);
-        if (NB!='NB') {
-          if (type == 1) {//拾取点位
-            that.getLeftClickDescription(obj);
-          }
-          if (type == 2) {//标线
-            that.entityHandler(0);
-            that.setConnectList(obj.graphicsList, obj.color, obj.withAlpha);
-          }
-          if (type == 3) {//标面
-            that.entityHandler(1);
-            that.setGraphicsList1(obj.graphicsList, obj.color, obj.withAlpha);
-          }
-        }
-        if (NB=='NB' && type == 2){
-          // console.log(obj)
-          that.entityHandler(0);
-          // that.setConnectList(obj.graphicsList, obj.color, obj.withAlpha);
-          for (let i = 0; i < obj.length; i++) {
-            let arrayBlue = [];
-            let arrayRed = [];
-            // if (Array.isArray(obj[i].params)){
-              for (let j = 0; j < obj[i].params.length; j++) {
-                if (obj[i].id===666){
-                  arrayBlue.push(obj[i].params[j].lng);
-                  arrayBlue.push(obj[i].params[j].lat);
-                }
-                else {
-                  arrayRed.push(obj[i].params[j].lng);
-                  arrayRed.push(obj[i].params[j].lat);
-                }
-              }
-              that.setConnectTwoList(
-                Array.isArray(arrayRed) && arrayRed.length > 0 ? arrayRed : [],
-                "rgba(232,14,14,0)",
-                0.8
-              );
-            that.setConnectTwoList(
-              Array.isArray(arrayBlue) && arrayBlue.length > 0 ? arrayBlue : [],
-              "rgba(14,25,231,0)",
-              0.8
-            );
-            // }
-          }
-        }
-        that.viewer.selectedEntityChanged.addEventListener(function (entity) {
-          if (entity != undefined && Reflect.has(entity, 'layerID')) {
-            that.putSmUserID_layer(entity);
-          }
-        });
-      },
-      entityHandler(chooseDrawMode) {
-        let that = this;
-        that.markerList = [];
-        that.handler = new Cesium.DrawHandler(that.viewer, that.chooseMode[chooseDrawMode]);
-        that.handler.activeEvt.addEventListener(function (isActive) {
-          if (isActive == true) {
-            that.viewer.enableCursorStyle = false;
-            that.viewer._element.style.cursor = '';
-          } else {
-            that.viewer.enableCursorStyle = true;
-          }
-        });
-        that.viewer.scene.globe.depthTestAgainstTerrain = false
-        that.handler.activate();
-        var newhandler = new Cesium.ScreenSpaceEventHandler(that.viewer.scene.canvas);
-        newhandler.setInputAction(function (event) {
-          // 屏幕坐标转世界坐标——关键点
-          var ellipsoid = that.viewer.scene.globe.ellipsoid;
-          var cartesian = that.viewer.camera.pickEllipsoid(event.position, ellipsoid);
-          //将笛卡尔坐标转换为地理坐标
-          var cartographic = Cesium.Cartographic.fromCartesian(cartesian);
-          //将弧度转为度的十进制度表示
-          var lon = Cesium.Math.toDegrees(cartographic.longitude);
-          var lat = Cesium.Math.toDegrees(cartographic.latitude);
-          let draw = {lng: 0, lat: 0};
-          draw.lng = lon;
-          draw.lat = lat;
-          if (!that.markerList.includes(draw)) {
-            that.markerList.push(draw);
-            that.$emit("showLatLng", {markerList: that.markerList});
-          }
-        }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
-      },
-      getLeftClickDescription(obj) {
-        let that = this
-        that.handler = new Cesium.ScreenSpaceEventHandler(that.viewer.scene.canvas);
-        if (obj.longitude) {
-          //在点击位置添加对应点
-          that.viewer.entities.add({
-            name: '',
-            position: Cesium.Cartesian3.fromDegrees(obj.longitude, obj.latitude),
-            billboard: {
-              image: iconList['marker'],
-              width: 48,
-              height: 48,
-              disableDepthTestDistance: Number.POSITIVE_INFINITY
-            },
-          })
-        }
-        //设置鼠标左键单击回调事件
-        that.handler.setInputAction(function (e) {
-          //首先移除之前添加的点
-          that.viewer.entities.removeAll();
-          //获取点击位置笛卡尔坐标
-          let position = that.viewer.scene.pickPosition(e.position);
-          //将笛卡尔坐标转化为经纬度坐标
-          let cartographic = Cesium.Cartographic.fromCartesian(position);
-          let longitude = Cesium.Math.toDegrees(cartographic.longitude);
-          let latitude = Cesium.Math.toDegrees(cartographic.latitude);
-          that.$emit("showLatLng", {latitude: latitude, longitude: longitude})
-          //在点击位置添加对应点
-          that.viewer.entities.add({
-            name: '',
-            position: Cesium.Cartesian3.fromDegrees(longitude, latitude),
-            billboard: {
-              image: iconList['marker'],
-              width: 48,
-              height: 48,
-              heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
-              disableDepthTestDistance: Number.POSITIVE_INFINITY
-            },
-          })
-          that.markerboxEntity.push(marker)
-          that.viewer.scene.globe.depthTestAgainstTerrain = false
-        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
-      },
-      /**
-       * 地图落点
-       */
-      setMarkers(makerList) {
-        let that = this
-        that.handler = new Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas)
-        for (let i in makerList) {
-          let longitude = makerList[i].lng;
-          let latitude = makerList[i].lat;
-          let marker = that.viewer.entities.add({
-            name: "",
-            position: Cesium.Cartesian3.fromDegrees(longitude, latitude),
-            billboard: {
-              image: iconList[makerList[i].icon],
-              width: 48,
-              height: 48,
-              heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
-              disableDepthTestDistance: Number.POSITIVE_INFINITY
-            },
-            description: makerList[i].bindPopupHtml,
-            click: makerList[i].click,
-            parameter: makerList[i].parameter
-          })
-          that.markerboxEntity.push(marker)
-        }
-        that.viewer.scene.globe.depthTestAgainstTerrain = false
-        that.createLeftClickDescription()
-        that.createRightClickDescription()
-      },
-      /**
-       *鼠标左击事件是原来的气泡
-       */
-      createLeftClickDescription() {
-        let that = this;
-        that.handler.setInputAction(function (movement) {
-          that.pick = that.viewer.scene.pick(movement.position);
-          if (that.pick && that.pick) {
-            let id = Cesium.defaultValue(that.viewer.scene.pick(movement.position).id, that.viewer.scene.pick(
-              movement.position).primitive.id);
-
-            let html = id._description;
-            if (html != undefined && html._value != null && html._value != '') {
-              that.bindPopupHtml = html
-              that.mapshow = true
-            } else {
-              that.mapshow = false
-            }
-          } else {
-            that.mapshow = false
-          }
-        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
-      },
-      /**
-       *鼠标右击事件是原来的点击
-       */
-      createRightClickDescription() {
-        let that = this;
-        that.handler.setInputAction(function (movement) {
-          that.mapshow = false
-          // 监听鼠标的当前位置坐标,然后根据当前坐标去动态更新气泡窗口div的显示位置;
-          that.pick = that.viewer.scene.pick(movement.position);
-          if (that.pick && that.pick) {
-            let id = Cesium.defaultValue(that.viewer.scene.pick(movement.position).id, that.viewer.scene.pick(movement.position).primitive.id);
-            let clickName = id._click;
-            that.$emit(clickName, id._parameter)
-          }
-        }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
-      },
-      /**
-       * 落点定位
-       */
-      dropLocation(lat, lng) {
-        this.viewer.camera.flyTo({
-          destination: Cesium.Cartesian3.fromDegrees(lng, lat, 3000),
-        });
-      },
-      /**
-       * 地图画线(贴地)
-       */
-
-      setGraphicsList1(graphicsList, color, withAlpha) {
-        let that = this;
-        that.viewer.entities.removeAll(); // 移除地图标点
-        let material = Cesium.Color.fromCssColorString(color).withAlpha(withAlpha);
-        for (let i = 0; i < graphicsList.length; i++) {
-          let positions = Cesium.Cartesian3.fromDegreesArray(graphicsList[i].latLng);
-          let name = graphicsList[i].name.toString();
-          let center = Cesium.BoundingSphere.fromPoints(positions).center;
-          let namePosition = Cesium.Cartographic.fromCartesian(center);
-          namePosition.height = 0; // 将名称高度设置为0,使其贴地显示
-
-          that.graphicsBoxEntity = that.viewer.entities.add({
-            polygon: {
-              hierarchy: positions,
-              clampToGround: true,
-              width: 5,
-              material: material
-            }
-          });
-
-          that.viewer.entities.add({
-            position: center,
-            label: {
-              text: name ,
-              font: 'Bold 12px sans-serif',
-              fillColor: Cesium.Color.BLACK,
-              outlineColor: Cesium.Color.WHITE,
-              outlineWidth: 2,
-              pixelOffset: new Cesium.Cartesian2(0, 0),
-              heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
-              disableDepthTestDistance: Number.POSITIVE_INFINITY
-            }
-          });
-        }
-      },
-      // setTimeout(() => {
-      //   if(graphicsList!=null&&Array.isArray(graphicsList)&&graphicsList.length>0){
-      //     that.viewer.camera.flyTo({
-      //       destination: Cesium.Cartesian3.fromDegrees(graphicsLists[0],graphicsLists[1],6500),
-      //       complete: function () {
-      //         // 飞行结束后设置相机的高度
-      //         var newHeight = 6500;
-      //         var destination = that.viewer.camera.position.clone();
-      //         destination.z = newHeight;
-      //       }
-      //     });
-      //   }
-      // }, 3000);
-      /**
-       * 地图图形(贴地)
-       */
-      setGraphicsList(graphicsList, color, withAlpha) {
-        let that = this
-        //Cesium.Color.fromCssColorString('#67ADDF')   16进制颜色设置
-        console.log(graphicsList)
-        let material = Cesium.Color.fromCssColorString(color).withAlpha(withAlpha);
-        for (let i = 0; i < graphicsList.length; i++) {
-          that.graphicsBoxEntity = that.viewer.entities.add({
-            polygon: {
-              hierarchy: Cesium.Cartesian3.fromDegreesArray(graphicsList[i].latLng),
-              clampToGround: true,//贴地 true,不贴地  false
-              width: 5,
-              material: material
-            }
-          })
-        }
-        // setTimeout(() => {
-        //   if(graphicsList!=null&&Array.isArray(graphicsList)&&graphicsList.length>0){
-        //     that.viewer.camera.flyTo({
-        //       destination: Cesium.Cartesian3.fromDegrees(graphicsList[0],graphicsList[1],6500),
-        //       complete: function () {
-        //         // 飞行结束后设置相机的高度
-        //         var newHeight = 6500;
-        //         var destination = that.viewer.camera.position.clone();
-        //         destination.z = newHeight;
-        //       }
-        //     });
-        //   }
-        // }, 3000);
-      }
-    },
-  }
-</script>
-
-<style rel="stylesheet/scss" lang="scss" scoped>
-  .map-tit {
-    position: absolute;
-    top: 90px;
-    left: 50%;
-    transform: translatex(-50%);
-    border: 1px solid #15519b;
-    z-index: 9999;
-    background: linear-gradient(rgba(4, 23, 62, 0.6), rgba(0, 28, 70, 0.6));
-    min-width: 300px;
-
-    .top-tit {
-      width: 100%;
-      height: 28px;
-      line-height: 28px;
-      display: flex;
-      flex-direction: row;
-      justify-content: space-between;
-      background: #15519b80;
-      padding: 0px 10px;
-      align-items: center;
-
-      i {
-        color: #10ccff;
-        font-size: 18px;
-        text-shadow: 0px 0px 5px #23b3b3;;
-      }
-
-      span img {
-        display: block;
-        width: 12px;
-        height: 12px;
-        color: #fff;
-        cursor: pointer;
-      }
-    }
-
-    .map-txt {
-      padding: 10px 15px;
-      color: #fff;
-      line-height: 20px;
-      font-size: 12px;
-
-      .d-l-con {
-      }
-    }
-  }
-
-  .fade-enter-active,
-  .fade-leave-active {
-    transition: 1s;
-  }
-
-  .fade-enter,
-  .fade-leave-to {
-    opacity: 0;
-    transform: translateY(-10rem);
-  }
-</style>

+ 461 - 27
data-ui/src/views/components/supermap-2.5d.vue

@@ -4,10 +4,10 @@
 </template>
 </template>
 
 
 <script>
 <script>
-import {iconList} from '@/api/components/supermap.js'
-import {getConfigKey} from '@/api/system/config'
+  import {iconList,queryMap} from '@/api/components/supermap.js'
+  import {getConfigKey} from '@/api/system/config'
 
 
-export default {
+  export default {
     name: 'supermap-camera-2.5d',
     name: 'supermap-camera-2.5d',
     data() {
     data() {
       return {
       return {
@@ -44,6 +44,7 @@ export default {
 
 
         /*************************原地图属性*********************/
         /*************************原地图属性*********************/
         aac: null,
         aac: null,
+        dataMap: {},
         queryParams: {
         queryParams: {
           name: null,
           name: null,
           mapData: null,
           mapData: null,
@@ -61,11 +62,21 @@ export default {
       putSmUserID_layer: null,
       putSmUserID_layer: null,
     },
     },
     methods: {
     methods: {
-      superMapInfo(type, obj,NB) {
+
+      superMapInfo(type, obj,NB,state,map3dType) {//map3dType用于区分是多个区域还是单个区域:1等于多个区域其他为单个区域
         getConfigKey('superMap.iServer').then(response => {
         getConfigKey('superMap.iServer').then(response => {
           this.superMapRootUrl = response.msg;
           this.superMapRootUrl = response.msg;
-          this.onload(type, obj,NB);
         })
         })
+        if (state==undefined){
+          state = 6;
+        }
+        queryMap(state,this.$store.state.user.dept.deptId).then(req => {
+            req = req.sort(function(a, b) {
+              return a.sort - b.sort
+            })
+            this.onload(req,type, obj,NB,map3dType)
+          }
+        )
       },
       },
       //清除所有
       //清除所有
       clearAll() {
       clearAll() {
@@ -254,12 +265,394 @@ export default {
           });
           });
         }
         }
       },
       },
-      onload(type, obj,NB) {
-        let that = this;
+      addImageryProvider(uri) {
+        let that = this
+        that.viewer.imageryLayers.addImageryProvider(new Cesium.SuperMapImageryProvider({
+          url: that.superMapRootUrl + uri
+        }))
+      },
+      addVectorTilesMap(uri) {
+        let that = this
+        that.scene.addVectorTilesMap({
+          url: that.superMapRootUrl + uri,
+          canvasWidth: 512,
+          name: 'mvt_map3',
+          viewer: that.viewer,
+          show: true
+        })
+      },
+      addOpen(sort, uri) {
+        let that = this
+        that.dataMap[sort] = that.scene.open(that.superMapRootUrl + uri)
+      },
+      addOpen_model(sort, uri) {
+        let that = this
+        that.dataMap[sort] = that.scene.open(that.superMapRootUrl + uri)
+        //开始加载专题图等数据,8秒后开始执行
+        setTimeout(function () {
+          /**
+           * @param dom ScreenSpaceEventHandler操作的dom节点,画的框会成为其子节点
+           */
+          function DrawRectHandler(dom) {
+            let startPoint,
+              self = this,
+              isShiftAndLeftDown = false,
+              handler = new Cesium.ScreenSpaceEventHandler(dom),
+              removalFunctions = [],
+              rect = new Rect(dom)
+            this.isDestroyed = false
+            this.activeEvt = new Cesium.Event()
+            this.cancelEvt = new Cesium.Event()
+            this.movingEvt = new Cesium.Event()
+            this.drawEvt = new Cesium.Event()
+
+            // div框
+            function Rect(parentDom) {
+              this.rect = document.createElement('div')
+              this.rect.style.visibility = 'hidden'
+              parentDom.appendChild(this.rect)
+              this.leftTopPoint = new Cesium.Cartesian2()
+              this.rightBottomPoint = new Cesium.Cartesian2()
+              Rect.prototype.setPosition = function (startPoint, endPosition) {
+                let w = endPosition.x - startPoint.x
+                let h = endPosition.y - startPoint.y
+                let left, top, width, height
+                if (w < 0) {
+                  left = endPosition.x
+                  width = -w
+                } else {
+                  left = startPoint.x
+                  width = w
+                }
+                if (h < 0) {
+                  top = endPosition.y
+                  height = -h
+                } else {
+                  top = startPoint.y
+                  height = h
+                }
+                this.leftTopPoint = new Cesium.Cartesian2(left, top)
+                this.rightBottomPoint = new Cesium.Cartesian2(left + width, top + height)
+                this.rect.style = `position:fixed;top:${top}px;left:${left}px;width:${width}px;height:${height}px;border:2px dashed #333;`
+                this.setVisible(true)
+              }
+              Rect.prototype.setVisible = function (isVisible) {
+                this.rect.style.visibility = isVisible ? 'visible' : 'hidden'
+              }
+              Rect.prototype.getRectPoint = function () {
+                return {
+                  leftTopPoint: this.leftTopPoint,
+                  rightBottomPoint: this.rightBottomPoint
+                }
+              }
+              Rect.prototype.destroy = function () {
+                dom.removeChild(rect)
+                this.rect = null
+              }
+            }
+
+            // canvas框
+            function RectCanvas(parentDom) {
+              let canvas = document.createElement('canvas'),
+                ctx = canvas.getContext('2d')
+              this.canvas = canvas
+              canvas.width = parentDom.clientWidth
+              canvas.height = parentDom.clientHeight
+              canvas.style = 'position:fixed;top:0;left:0;z-index:-1'
+              parentDom.appendChild(canvas)
+              this.leftTopPoint = new Cesium.Cartesian2()
+              this.rightBottomPoint = new Cesium.Cartesian2()
+              RectCanvas.prototype.setPosition = function (startPoint, endPosition) {
+                let w = endPosition.x - startPoint.x
+                let h = endPosition.y - startPoint.y
+                let left, top, width, height
+                if (w < 0) {
+                  left = endPosition.x
+                  width = -w
+                } else {
+                  left = startPoint.x
+                  width = w
+                }
+                if (h < 0) {
+                  top = endPosition.y
+                  height = -h
+                } else {
+                  top = startPoint.y
+                  height = h
+                }
+                this.leftTopPoint = new Cesium.Cartesian2(left, top)
+                this.rightBottomPoint = new Cesium.Cartesian2(left + width, top + height)
+                ctx.clearRect(0, 0, canvas.width, canvas.height)
+                ctx.strokeRect(left, top, width, height)
+              }
+              RectCanvas.prototype.setVisible = function (isVisible) {
+                if (isVisible) {
+                  canvas.style.zIndex = '999'
+                } else {
+                  canvas.style.zIndex = '-1'
+                }
+              }
+              RectCanvas.prototype.getRectPoint = function () {
+                return {
+                  leftTopPoint: this.leftTopPoint,
+                  rightBottomPoint: this.rightBottomPoint
+                }
+              }
+              RectCanvas.prototype.destroy = function () {
+                dom.removeChild(canvas)
+                ctx = null
+                this.canvas = null
+              }
+            }
+
+            // 开关相机控制
+            function setCameraCtrl(isActive) {
+              let cameraCtrl = that.scene.screenSpaceCameraController
+              cameraCtrl.enableRotate = isActive
+              cameraCtrl.enableTranslate = isActive
+              cameraCtrl.enableZoom = isActive
+              cameraCtrl.enableTilt = isActive
+              cameraCtrl.enableLook = isActive
+            }
+
+            // 鼠标cursor控制
+            function toggleCursorStyle(isActive) {
+              if (isActive) {
+                that.viewer.enableCursorStyle = false
+                that.viewer._element.style.cursor = ''
+                dom.style.cursor = 'default'
+              } else {
+                that.viewer.enableCursorStyle = true
+              }
+            }
+
+            // 初始化事件处理
+            function initEvent() {
+              handler.setInputAction(function (e) {
+                isShiftAndLeftDown = true
+                startPoint = new Cesium.Cartesian2(e.position.x, e.position.y)
+              }, Cesium.ScreenSpaceEventType.LEFT_DOWN, Cesium.KeyboardEventModifier.SHIFT)
+              // shift松开时,始终将rect隐藏
+              let keyUpFunction = function (e) {
+                self.cancelEvt.raiseEvent()
+                if (e.key == 'Shift' && isShiftAndLeftDown && !self.isDestroyed) {
+                  isShiftAndLeftDown = false
+                  rect.setVisible(false)
+                }
+              }
+
+              document.addEventListener('keyup', keyUpFunction)
+              removalFunctions.push(function () {
+                document.removeEventListener('keyup', keyUpFunction)
+              })
+              handler.setInputAction(function (e) {
+                let endPosition = e.endPosition
+                self.activeEvt.raiseEvent(endPosition)
+                if (!isShiftAndLeftDown) return
+                rect.setPosition(startPoint, endPosition)
+                rect.setVisible(true)
+                self.movingEvt.raiseEvent(rect.getRectPoint())
+              }, Cesium.ScreenSpaceEventType.MOUSE_MOVE, Cesium.KeyboardEventModifier.SHIFT)
+              handler.setInputAction(function (e) {
+                isShiftAndLeftDown = false
+                rect.setVisible(false)
+                self.drawEvt.raiseEvent(rect.getRectPoint())
+              }, Cesium.ScreenSpaceEventType.LEFT_UP, Cesium.KeyboardEventModifier.SHIFT)
+              handler.setInputAction(function (e) {
+                isShiftAndLeftDown = false
+                rect.setVisible(false)
+              }, Cesium.ScreenSpaceEventType.LEFT_UP)
+            }
+
+            // 移除事件监听
+            function removeEvent() {
+              handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOWN, Cesium.KeyboardEventModifier.SHIFT)
+              handler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE, Cesium.KeyboardEventModifier.SHIFT)
+              handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_UP, Cesium.KeyboardEventModifier.SHIFT)
+              handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_UP)
+            }
+
+            DrawRectHandler.prototype.destroy = function () {
+              if (this.isDestroyed) return
+              setCameraCtrl(true)
+              removeEvent()
+              for (let i = 0, j = removalFunctions.length; i < j; i++) {
+                removalFunctions[i]()
+              }
+              handler.destroy()
+              rect.destroy()
+              rect = null
+              this.isDestroyed = true
+            }
+            DrawRectHandler.prototype.activate = function () {
+              if (this.isDestroyed) return
+              setCameraCtrl(false)
+              toggleCursorStyle(true)
+              initEvent()
+            }
+            DrawRectHandler.prototype.deactivate = function () {
+              if (this.isDestroyed) return
+              setCameraCtrl(true)
+              toggleCursorStyle(false)
+              removeEvent()
+            }
+          }
+
+          new Cesium.when(that.dataMap[sort], function (layers) {
+            for (let layer of layers) {
+              layer.selectColorType = 1
+              that.selectedObjs[layer.name] = []
+              that.resetIds[layer.name] = []
+            }
+            let drawRect = that.drawRect = new DrawRectHandler(document.body)
+            // res为框的左上点与右下点的相对于给定dom节点的坐标
+            drawRect.drawEvt.addEventListener(function (res) {
+              for (let layer of layers) {
+                layer.selectColorType = 1
+              }
+              that.tooltip = false
+              let selectedColor = new Cesium.Color(1, 0, 0, 1)
+              that.scene.pickRect(res.leftTopPoint, res.rightBottomPoint)
+              let objs = that.scene.getPickRectIDs()
+              let selectedObjs = that.selectedObjs
+              let resetIds = that.resetIds
+              for (let k in selectedObjs) {
+                if (selectedObjs[k].length > 0) {
+                  that.scene.layers.find(k).removeObjsColor(selectedObjs[k])
+                }
+              }
+              if (that.kuangxuan) {
+                for (let layer of layers) {
+                  let layerName = layer.name
+                  if (layerName === undefined) break
+                  let layerSlt = objs.find(e => e.layerName === layerName)
+                  let sltIds = (layerSlt && layerSlt.ids) || []
+                  resetIds[layerName] = selectedObjs[layerName]
+                  selectedObjs[layerName] = sltIds
+                  console.log('框选结束',  sltIds)
+                  that.$parent.$refs.ldTk.FrameSelectedData(sltIds)
+                  that.$parent.$refs.ldTk.allLouDongDialog = true
+                  layer.setObjsColor(selectedObjs[layerName], selectedColor)
+                }
+              }
+            })
+
+            drawRect.movingEvt.addEventListener(function (res) {
+              that.tooltip = true
+              if (that.kuangxuan) {
+                that.tooltipText = "松开鼠标左键以结束选择区域"
+                for (let layer of layers) {
+                  layer.selectColorType = 1
+                }
+                that.scene.pickRect(res.leftTopPoint, res.rightBottomPoint)
+              } else {
+                that.tooltipText = "请点击框选"
+              }
+            })
+            drawRect.activeEvt.addEventListener(function (position) {
+              that.tooltip = true
+              if (that.kuangxuan) {
+                that.tooltipText = "松开鼠标左键以结束选择区域"
+              } else {
+                that.tooltipText = "请点击框选"
+              }
+            })
+            drawRect.cancelEvt.addEventListener(function () {
+              that.tooltip = false
+            })
+
+            let canvas = document.querySelector('div.cesium-widget canvas')
+            canvas.setAttribute('tabindex', '0') // needed to put focus on the canvas
+            canvas.focus()
+            document.addEventListener('keydown', function (e) {
+              if (e.key === 'Shift') {
+                drawRect.activate()
+              }
+            })
+            document.addEventListener('keyup', function (e) {
+              if (e.key === 'Shift') {
+                drawRect.deactivate()
+              }
+            })
+          }, function () {
+            // let title = '加载SCP失败,请检查网络连接状态或者url地址是否正确?'
+            // widget.showErrorPanel(title, undefined, e)
+          }).then(function () {
+
+          }, function (e) {
+            console.log(e)
+          })
+        }, 3000);
+      },
+      addFind(parentId, uri) {
+        let that = this
+        that.dataMap[parentId].then(function(layers) {
+          let dat = that.scene.layers.find(uri) //区县文字图层
+          //关闭避让
+          dat.isOverlapDisplayed = true
+        })
+      },
+      flyTo(longitude, latitude, height) {
+        let that = this
+        setTimeout(function() {
+          that.viewer.camera.flyTo({
+            destination: Cesium.Cartesian3.fromDegrees(longitude, latitude, height),
+            orientation: {}
+          })
+        }, 3000)
+      },
+      onload(supermapUrls,type, obj,NB,map3dType) {
+        let that = this
+        const withinData = supermapUrls
         //1.添加地形数据
         //1.添加地形数据
         that.viewer = new Cesium.Viewer('cesiumContainer', {
         that.viewer = new Cesium.Viewer('cesiumContainer', {
           //创建地形服务提供者的实例,url为SuperMap iServer发布的TIN地形服务
           //创建地形服务提供者的实例,url为SuperMap iServer发布的TIN地形服务
           terrainProvider: new Cesium.CesiumTerrainProvider({
           terrainProvider: new Cesium.CesiumTerrainProvider({
+            url: that.superMapRootUrl + '/3D-sipingchangjing/rest/realspace/datas/dem@spyx4326',
+            //isSct : false,//地形服务源自SuperMap iServer发布时需设置isSct为true
+            invisibility: true
+          }),
+          infoBox: false,
+          navigation: false
+        }, {
+          contextOptions: {
+            msaaLevel: 4,
+            requestWebgl2: true
+          },
+          orderIndependentTranslucency: false
+        })
+        that.scene = that.viewer.scene
+        that.viewer.cesiumWidget.creditContainer.style.display = 'none' // 去掉超图logo水印
+        //2.添加SuperMap iServer发布的影像服务
+        that.addImageryProvider(withinData[0].path)
+        let longitude = withinData[0].coordinate.split(',')[0]
+        let latitude = withinData[0].coordinate.split(',')[1]
+        let height = withinData[0].scale
+        that.flyTo(longitude, latitude, height)
+        setTimeout(function() {
+          for (let i = 1; i < withinData.length; i++) {
+            setTimeout(() => {
+              if (withinData[i].type == 'addImagery') {
+                that.addImageryProvider(withinData[i].path)
+              } else if (withinData[i].type == 'addVectorTilesMap') {
+                that.addVectorTilesMap(withinData[i].path)
+              } else if (withinData[i].type == 'open') {
+                that.addOpen(withinData[i].sort, withinData[i].path)
+              }else if (withinData[i].type == 'open_model') {
+                that.addOpen_model(withinData[i].sort, withinData[i].path)
+              } else if (withinData[i].type == 'find') {
+                that.addFind(withinData[i].parentId, withinData[i].path)
+              }
+            }, 100 * i)
+          }
+        }, 3000)
+
+
+
+        /*//1.添加地形数据
+        that.viewer = new Cesium.Viewer('cesiumContainer', {
+          //创建地形服务提供者的实例,url为SuperMap iServer发布的TIN地形服务
+          terrainProvider: new Cesium.CesiumTerrainProvider({
             url: that.superMapRootUrl + "/3D-sipingchangjing/rest/realspace/datas/dem@spyx4326",
             url: that.superMapRootUrl + "/3D-sipingchangjing/rest/realspace/datas/dem@spyx4326",
             //isSct : false,//地形服务源自SuperMap iServer发布时需设置isSct为true
             //isSct : false,//地形服务源自SuperMap iServer发布时需设置isSct为true
             invisibility: true
             invisibility: true
@@ -283,13 +676,13 @@ export default {
 
 
         //3.添加SuperMap 建筑场景
         //3.添加SuperMap 建筑场景
         let aaaa = that.superMapRootUrl + "/3D-local3DCache-Data3/rest/realspace";
         let aaaa = that.superMapRootUrl + "/3D-local3DCache-Data3/rest/realspace";
-        scene.open(aaaa);
+        scene.open(aaaa);*/
 
 
         //飞行值坐标点,每3秒推进一级
         //飞行值坐标点,每3秒推进一级
         //heading-代表镜头左右方向,正值为右,负值为左
         //heading-代表镜头左右方向,正值为右,负值为左
         //pitch-代表镜头上下方向,正值为上,负值为下.
         //pitch-代表镜头上下方向,正值为上,负值为下.
         //roll-代表镜头左右倾斜,正值,向右倾斜,负值向左倾斜
         //roll-代表镜头左右倾斜,正值,向右倾斜,负值向左倾斜
-        setTimeout(function () {
+        /*setTimeout(function () {
           that.viewer.camera.flyTo({
           that.viewer.camera.flyTo({
             destination: Cesium.Cartesian3.fromDegrees(124.49980650138238, 43.428263986216815, 950000),
             destination: Cesium.Cartesian3.fromDegrees(124.49980650138238, 43.428263986216815, 950000),
             orientation: {
             orientation: {
@@ -321,10 +714,10 @@ export default {
             }
             }
           });
           });
 
 
-        }, 3000);
+        }, 3000);*/
 
 
         //开始加载专题图等数据,8秒后开始执行
         //开始加载专题图等数据,8秒后开始执行
-        setTimeout(function () {
+        /*setTimeout(function () {
           //3.水系
           //3.水系
           let shuixi = that.superMapRootUrl + "/map-mvt-shuixiMian/restjsr/v1/vectortile/maps/shuixi_Mian";
           let shuixi = that.superMapRootUrl + "/map-mvt-shuixiMian/restjsr/v1/vectortile/maps/shuixi_Mian";
           that.mvtMap0 = scene.addVectorTilesMap({
           that.mvtMap0 = scene.addVectorTilesMap({
@@ -432,7 +825,7 @@ export default {
           // let layer_xiangzhenjie_name = that.superMapRootUrl+'/3D-XiangZhenJie_Name/rest/realspace';
           // let layer_xiangzhenjie_name = that.superMapRootUrl+'/3D-XiangZhenJie_Name/rest/realspace';
           // scene.open(layer_xiangzhenjie_name);
           // scene.open(layer_xiangzhenjie_name);
 
 
-        }, 3000);
+        }, 3000);*/
         if (NB!='NB') {
         if (NB!='NB') {
           if (type == 1) {//拾取点位
           if (type == 1) {//拾取点位
             that.getLeftClickDescription(obj);
             that.getLeftClickDescription(obj);
@@ -443,7 +836,13 @@ export default {
           }
           }
           if (type == 3) {//标面
           if (type == 3) {//标面
             that.entityHandler(1);
             that.entityHandler(1);
-            that.setGraphicsList1(obj.graphicsList, obj.color, obj.withAlpha);
+            if (map3dType == 1){//多区域
+              this.setGraphicsList2(obj.graphicsList, obj.color, obj.withAlpha)
+            }else {//单区域
+              that.setGraphicsList1(obj.graphicsList, obj.color, obj.withAlpha);
+            }
+
+
           }
           }
         }
         }
         if (NB=='NB' && type == 2){
         if (NB=='NB' && type == 2){
@@ -454,21 +853,21 @@ export default {
             let arrayBlue = [];
             let arrayBlue = [];
             let arrayRed = [];
             let arrayRed = [];
             // if (Array.isArray(obj[i].params)){
             // if (Array.isArray(obj[i].params)){
-              for (let j = 0; j < obj[i].params.length; j++) {
-                if (obj[i].id===666){
-                  arrayBlue.push(obj[i].params[j].lng);
-                  arrayBlue.push(obj[i].params[j].lat);
-                }
-                else {
-                  arrayRed.push(obj[i].params[j].lng);
-                  arrayRed.push(obj[i].params[j].lat);
-                }
+            for (let j = 0; j < obj[i].params.length; j++) {
+              if (obj[i].id===666){
+                arrayBlue.push(obj[i].params[j].lng);
+                arrayBlue.push(obj[i].params[j].lat);
+              }
+              else {
+                arrayRed.push(obj[i].params[j].lng);
+                arrayRed.push(obj[i].params[j].lat);
               }
               }
-              that.setConnectTwoList(
-                Array.isArray(arrayRed) && arrayRed.length > 0 ? arrayRed : [],
-                "rgba(232,14,14,0)",
-                0.8
-              );
+            }
+            that.setConnectTwoList(
+              Array.isArray(arrayRed) && arrayRed.length > 0 ? arrayRed : [],
+              "rgba(232,14,14,0)",
+              0.8
+            );
             that.setConnectTwoList(
             that.setConnectTwoList(
               Array.isArray(arrayBlue) && arrayBlue.length > 0 ? arrayBlue : [],
               Array.isArray(arrayBlue) && arrayBlue.length > 0 ? arrayBlue : [],
               "rgba(14,25,231,0)",
               "rgba(14,25,231,0)",
@@ -693,6 +1092,41 @@ export default {
         }, 3000);
         }, 3000);
 
 
       },
       },
+      setGraphicsList2(graphicsList, color, withAlpha) {
+        let that = this;
+        that.viewer.entities.removeAll(); // 移除地图标点
+        let material = Cesium.Color.fromCssColorString(color).withAlpha(withAlpha);
+        for (let i = 0; i < graphicsList.length; i++) {
+          let positions = Cesium.Cartesian3.fromDegreesArray(graphicsList[i].latLng);
+          let name = graphicsList[i].name.toString();
+          let center = Cesium.BoundingSphere.fromPoints(positions).center;
+          let namePosition = Cesium.Cartographic.fromCartesian(center);
+          namePosition.height = 0; // 将名称高度设置为0,使其贴地显示
+
+          that.graphicsBoxEntity = that.viewer.entities.add({
+            polygon: {
+              hierarchy: positions,
+              clampToGround: true,
+              width: 5,
+              material: material
+            }
+          });
+
+          that.viewer.entities.add({
+            position: center,
+            label: {
+              text: name ,
+              font: 'Bold 12px sans-serif',
+              fillColor: Cesium.Color.BLACK,
+              outlineColor: Cesium.Color.WHITE,
+              outlineWidth: 2,
+              pixelOffset: new Cesium.Cartesian2(0, 0),
+              heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
+              disableDepthTestDistance: Number.POSITIVE_INFINITY
+            }
+          });
+        }
+      },
       /**
       /**
        * 地图图形(贴地)
        * 地图图形(贴地)
        */
        */

+ 39 - 5
data-ui/src/views/components/supermap.vue

@@ -262,6 +262,22 @@ export default {
       }
       }
       this.latLngLayers = []
       this.latLngLayers = []
     },
     },
+    //清除所有
+    clearAll() {
+      if (this.map) {
+        this.map.eachLayer(function (layer) {
+          if (layer instanceof window.L.Marker || layer instanceof window.L.Polygon) {
+            this.map.removeLayer(layer);
+          }
+        }, this);
+      }
+    },
+    clearP: async function () {//清理点击事件落点
+      if (this.latLngGroup != undefined && this.latLngGroup != false) {
+        this.latLngGroup.clearLayers()
+      }
+      this.latLngLayers = []
+    },
     initMap: function () {
     initMap: function () {
       let _that = this;
       let _that = this;
       this.mapDivId = this.mapDiv;
       this.mapDivId = this.mapDiv;
@@ -715,16 +731,34 @@ export default {
       _that.connectLayer = window.L.featureGroup().addTo(this.map);
       _that.connectLayer = window.L.featureGroup().addTo(this.map);
       _that.connectLayer.addLayer(polyline);
       _that.connectLayer.addLayer(polyline);
     },
     },
-    setGraphicsList: function (graphicsList, color) {//地图图形
+    setGraphicsList: function (graphicsList, color,name) {//地图图形
       const _that = this;
       const _that = this;
       let points = [];
       let points = [];
+      let polygons = new Map(); // 使用 Map 记录 Polygon 和对应的 Popup
       for (let i = 0; i < graphicsList.length; i++) {
       for (let i = 0; i < graphicsList.length; i++) {
         points.push([graphicsList[i].lat, graphicsList[i].lng]);//创建点
         points.push([graphicsList[i].lat, graphicsList[i].lng]);//创建点
       }
       }
-      let polygon = window.L.polygon(points, {color: color});
-      polygon.addTo(this.map);
-      _that.graphicsLayer = window.L.featureGroup().addTo(this.map);
-      _that.graphicsLayer.addLayer(polygon);
+      if (name){
+        let polygon = window.L.polygon(points, {color: color}); // 创建 Polygon
+        let center = polygon.getBounds().getCenter();
+        let namePopup = window.L.popup().setLatLng([center.lat, center.lng])
+          .setContent(name); // 创建对应的 Popup
+        namePopup.addTo(this.map);
+        polygon.bindPopup(namePopup); // 将 Popup 绑定到 Polygon
+        polygon.addTo(this.map);
+        _that.graphicsLayer = window.L.featureGroup().addTo(this.map);
+        _that.graphicsLayer.addLayer(polygon);
+
+        polygons.set(polygon, namePopup); // 将 Polygon 和 Popup 记录在 Map 中
+        // 在需要移除时,可以通过 polygons.get(polygon).remove() 移除对应的 Popup
+      }else {
+        let polygon = window.L.polygon(points, {color: color});
+        polygon.addTo(this.map);
+        _that.graphicsLayer = window.L.featureGroup().addTo(this.map);
+        _that.graphicsLayer.addLayer(polygon);
+      }
+
+
     },
     },
     dropLocation: function (lat, lng) {//落点定位
     dropLocation: function (lat, lng) {//落点定位
       this.controlLevel(10)
       this.controlLevel(10)

+ 2 - 1
data-ui/src/views/data/common/ISuperMap.vue

@@ -34,10 +34,11 @@
 
 
   const uuidv4 = require("uuid/v4")
   const uuidv4 = require("uuid/v4")
   import supermap from '@/views/components/supermap-2.5d';
   import supermap from '@/views/components/supermap-2.5d';
-  import Supermap from './supermap';
+  import Supermap from '@/views/components/supermap';
 
 
 
 
   export default {
   export default {
+    //基本地图
     name: "ISuperMap",
     name: "ISuperMap",
     components: {supermap, Supermap},
     components: {supermap, Supermap},
     data() {
     data() {

+ 5 - 4
data-ui/src/views/data/common/ISuperMapAreaMarker.vue

@@ -115,10 +115,11 @@ import {
 } from '@/api/data/digitalresources/info'
 } from '@/api/data/digitalresources/info'
 import request from '@/utils/request'
 import request from '@/utils/request'
 const uuidv4 = require("uuid/v4")
 const uuidv4 = require("uuid/v4")
-import supermap from '@/views/components/supermap-2.5d-multiple';
-import Supermap from '@/views/data/common/supermap';
+import supermap from '@/views/components/supermap-2.5d';
+import Supermap from '@/views/components/supermap';
 import { delFarmland, getFarmland, updateFarmland } from '@/api/data/digitalresources/farmland'
 import { delFarmland, getFarmland, updateFarmland } from '@/api/data/digitalresources/farmland'
 export default {
 export default {
+  //多区域的地图
   name: "ISuperMapArearAndCameras",
   name: "ISuperMapArearAndCameras",
   components: {supermap, Supermap},
   components: {supermap, Supermap},
   // created() {
   // created() {
@@ -248,7 +249,7 @@ export default {
                   graphicsList: this.arr && this.arr.length > 0 ? this.arr : [],
                   graphicsList: this.arr && this.arr.length > 0 ? this.arr : [],
                   color: "rgba(250,4,4,0)",
                   color: "rgba(250,4,4,0)",
                   withAlpha: 0.8
                   withAlpha: 0.8
-                });
+                },null,undefined,1);
               }, 2000);
               }, 2000);
             }
             }
             //2d 线
             //2d 线
@@ -275,7 +276,7 @@ export default {
     handleSelectionChange(selection) {
     handleSelectionChange(selection) {
       if ((this.sign === 2 && this.visible === true) || (this.sign === 3 && this.visible === true)) {
       if ((this.sign === 2 && this.visible === true) || (this.sign === 3 && this.visible === true)) {
         this.$refs.supermap.entityHandler(1);
         this.$refs.supermap.entityHandler(1);
-        this.$refs.supermap.setGraphicsList1(selection, "rgba(250,4,4,0)", 0.8);
+        this.$refs.supermap.setGraphicsList2(selection, "rgba(250,4,4,0)", 0.8);
       }
       }
 
 
       if (this.sign === 3 && this.showLongitudeq === true) {
       if (this.sign === 3 && this.showLongitudeq === true) {

+ 2 - 1
data-ui/src/views/data/common/ISuperMapArearAndCameras.vue

@@ -36,10 +36,11 @@ import {getConfigKey} from "@/api/system/config";
 import request from '@/utils/request'
 import request from '@/utils/request'
 const uuidv4 = require("uuid/v4")
 const uuidv4 = require("uuid/v4")
 import supermap from '@/views/components/supermap-2.5d';
 import supermap from '@/views/components/supermap-2.5d';
-import Supermap from './supermap';
+import Supermap from '@/views/components/supermap';
 
 
 
 
 export default {
 export default {
+  //摄像头的地图
   name: "ISuperMapArearAndCameras",
   name: "ISuperMapArearAndCameras",
   components: {supermap, Supermap},
   components: {supermap, Supermap},
   // created() {
   // created() {

+ 3 - 2
data-ui/src/views/data/common/ISuperMapTemp.vue

@@ -35,11 +35,12 @@
   import {getConfigKey} from "@/api/system/config";
   import {getConfigKey} from "@/api/system/config";
 
 
   const uuidv4 = require("uuid/v4")
   const uuidv4 = require("uuid/v4")
-  import supermap from '@/views/components/supermap-2.5d-multiple';
-  import Supermap from './supermap';
+  import supermap from '@/views/components/supermap-2.5d';
+  import Supermap from '@/views/components/supermap';
 
 
 
 
   export default {
   export default {
+    //发短信的地图
     name: "ISuperMapTemp",
     name: "ISuperMapTemp",
     components: {supermap, Supermap},
     components: {supermap, Supermap},
     data() {
     data() {

+ 0 - 796
data-ui/src/views/data/common/supermap.vue

@@ -1,796 +0,0 @@
-<template>
-  <div v-bind:id="mapDivId" ref="map" style="width: 100%; height: 100%;background: none;"></div>
-</template>
-
-<script>
-  import 'leaflet-side-by-side'
-  import '@supermap/iclient-leaflet'
-  import 'leaflet/dist/leaflet.css'
-  import 'leaflet.markercluster/dist/leaflet.markercluster-src.js';
-  import 'leaflet.markercluster/dist/MarkerCluster.css';
-  import 'leaflet.markercluster/dist/MarkerCluster.Default.css';
-  import 'leaflet-draw';
-  import 'leaflet-draw/dist/leaflet.draw.css'
-
-  import L from 'leaflet'
-
-  import {getSuperMap, iconList} from '@/api/components/supermap.js'
-  // import {setToken} from '../plugins/auth'
-  import modal from '@/plugins/modal'
-
-  export default {
-    name: "sookaSuperMap",
-    data() {
-      return {
-        mapDivId: "",
-        map: null,
-        layers: [],
-        isAggregationLayers: [],
-        radiusLayers: [],
-        myGroup: [],
-        isAggregationMyGroup: [],
-        polygon: null,
-        connectLayer: [],
-        graphicsLayer: [],
-        latLngLayers: [],
-        latLngGroup: [],
-        isEditableLayers: false,//绘图控件
-        drawControl: null,//绘图控件
-        deckglLayer : null,//图层Layer
-      }
-    },
-    watch: {
-      isEditableLayers: {
-        handler (newValue, oldValue) {
-          if (newValue) {
-            var editableLayers = new window.L.FeatureGroup();
-            this.map.addLayer(editableLayers);
-            let options = {
-              position: 'topleft',
-              draw: {
-                polyline: {},
-                polygon: {},
-                circle: {},
-                rectangle: {},
-                marker: {},
-                remove: {}
-              },
-              edit: {
-                featureGroup: editableLayers,
-                remove: true
-              }
-            };
-            this.drawControl = new window.L.Control.Draw(options);
-            this.map.addControl(this.drawControl);
-            this.map.on(window.L.Draw.Event.CREATED, function (e) {
-              let editableLayer = e.layer;
-              let layerType = e.layerType;
-              editableLayer.on('dblclick', function (e) {
-                if (layerType === "polygon"||layerType === "rectangle") {
-                  let latlng = editableLayer.getLatLngs()[0];
-                  //一个自定义的计算面积的函数
-                  var seeArea = window.L.GeometryUtil.geodesicArea(latlng);
-                  let area = (seeArea / 10e5).toFixed(2) + "k㎡";
-                  modal.msg(area);
-                } else if (layerType === "polyline") {
-                  let latlng = editableLayer.getLatLngs();
-                  //一个自定义的计算长度的函数
-                  let dis = 0;
-                  for (let i = 0; i < latlng.length - 1; i++) {
-                    let start = latlng[i];
-                    let end = latlng[i + 1];
-                    dis += window.L.latLng([start.lat, start.lng]).distanceTo([end.lat, end.lng]);//计算两个点之间的距离,并累加
-                  }
-                  //结果得到的也是number类型,单位是KM
-                  modal.msg((dis / 10e2).toFixed(2) + "km");
-                }
-              })
-              if(layerType === "marker"){
-                let icon = new window.L.Icon({
-                  iconUrl: iconList['marker'],
-                  iconSize: [48, 48],
-                  iconAnchor: [24, 40],
-                  popupAnchor: [-3, -40],
-                  shadowSize: [41, 41],
-                })
-                editableLayer.options.icon=icon;
-              }
-              editableLayers.addLayer(editableLayer);
-            });
-          }else{
-            this.map.removeControl(this.drawControl);
-          }
-        },
-      }
-    },
-    mounted() {
-      this.initMap();
-      //添加画图的提示信息
-      window.L.drawLocal.draw.toolbar = {
-        actions: {
-          title: '取消绘图',
-          text: '取消'
-        },
-        finish: {
-          title: '完成绘图',
-          text: '完成'
-        },
-        undo: {
-          title: '删除最后绘制的点',
-          text: '删除最后一个点'
-        },
-        buttons: {
-          polyline: '绘制折线',
-          polygon: '绘制多边形',
-          rectangle: '绘制矩形',
-          circle: '绘制圆圈',
-          marker: '绘制标记',
-          circlemarker: '绘制圆圈标记'
-        }
-      }
-      window.L.drawLocal.draw.handlers = {
-        circle: {
-          tooltip: {
-            start: '单击并拖动以绘制圆形'
-          },
-          radius: '半径'
-        },
-        circlemarker: {
-          tooltip: {
-            start: '点击地图放置圆圈标记'
-          }
-        },
-        marker: {
-          tooltip: {
-            start: '点击地图放置标记'
-          }
-        },
-        polygon: {
-          tooltip: {
-            start: '点击开始绘制形状',
-            cont: '点击继续绘制形状',
-            end: '单击第一个点以关闭此形状'
-          }
-        },
-        polyline: {
-          error: '<strong>Error:</strong> shape edges cannot cross!',
-          tooltip: {
-            start: '点击开始画线',
-            cont: '点击继续画线',
-            end: '单击最后一点以完成线'
-          }
-        },
-        rectangle: {
-          tooltip: {
-            start: '单击并拖动以绘制矩形'
-          }
-        },
-        simpleshape: {
-          tooltip: {
-            end: '释放鼠标完成绘图'
-          }
-        }
-      }
-      window.L.drawLocal.edit = {
-        toolbar: {
-          actions: {
-            save: {
-              title: '保存更改',
-              text: '保存'
-            },
-            cancel: {
-              title: '取消编辑,放弃所有更改',
-              text: '取消'
-            },
-            clearAll: {
-              title: '清除所有图层',
-              text: '清除所有'
-            }
-          },
-          buttons: {
-            edit: '编辑图层',
-            editDisabled: '没有可编辑的图层',
-            remove: '删除图层',
-            removeDisabled: '没有可删除的图层'
-          }
-        },
-        handlers: {
-          edit: {
-            tooltip: {
-              text: '拖动手柄或标记以编辑要素',
-              subtext: '单击取消以撤消更改'
-            }
-          },
-          remove: {
-            tooltip: {
-              text: '单击要删除的功能'
-            }
-          }
-        }
-      }
-    },
-    props: {
-      mapDiv: null,
-      codes: null,
-      mapSite: {},
-      isSideBySide: null,
-      showLatLng: null,
-      showAreaLatLng: null,
-      showLineLatLng: null,
-    },
-    methods: {
-      clearM: async function (isAggregation) {//清理地图标点
-        if (isAggregation) {
-          if (this.isAggregationMyGroup != undefined && this.isAggregationMyGroup != false) {
-            this.isAggregationMyGroup.clearLayers()
-          }
-          this.map.removeLayer(this.isAggregationLayers);
-          this.isAggregationLayers = [];
-          this.radiusLayers = [];
-          this.isAggregationLayers = window.L.markerClusterGroup({
-            //设置为true时显示聚类所占据的范围
-            showCoverageOnHover: true,
-            //设置为true时会向低一级聚类缩放
-            zoomToBoundsOnClick: true,
-            //增加点位时增加聚合动画(否则会出问题)
-            animateAddingMarkers: true,
-            //最大缩放级别点击聚合图标展开图标
-            spiderfyOnMaxZoom:true,
-          });
-
-        } else {
-          if (this.myGroup != undefined && this.myGroup != false) {
-            this.myGroup.clearLayers()
-          }
-          this.layers = []
-        }
-
-      },
-      clearC: async function () {//清理地图画线
-        if (this.connectLayer != undefined && this.connectLayer != false) {
-          this.connectLayer.clearLayers();
-        }
-      },
-      clearG: async function () {//清理地图图形
-        if (this.graphicsLayer != undefined && this.graphicsLayer != false) {
-          this.graphicsLayer.clearLayers();
-        }
-      },
-      //清除所有
-      clearAll() {
-        if (this.map) {
-          this.map.eachLayer(function (layer) {
-            if (layer instanceof window.L.Marker || layer instanceof window.L.Polygon) {
-              this.map.removeLayer(layer);
-            }
-          }, this);
-        }
-      },
-      clearP: async function () {//清理点击事件落点
-        if (this.latLngGroup != undefined && this.latLngGroup != false) {
-          this.latLngGroup.clearLayers()
-        }
-        this.latLngLayers = []
-      },
-      initMap: function () {
-        let _that = this;
-        this.mapDivId = this.mapDiv;
-        let mapSite = this.mapSite;
-        let isSideBySide = this.isSideBySide;
-        // setToken("eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VyX2tleSI6ImY5Zjg3ZjVmLWQ4NTctNDQxZC04NmQ5LTg4OWExZWRlODE4ZSIsInVzZXJuYW1lIjoiYWRtaW4ifQ.26mAzmaM9pUza9585aLnRMyRd4GxvrWbCxN0erYsuiBDYQiYnyc-TwXVNDI7Xrpt3Bqmbnul-XMszOxYQi12LA");
-        _that.isAggregationLayers = window.L.markerClusterGroup({
-          //设置为true时显示聚类所占据的范围
-          showCoverageOnHover: true,
-          //设置为true时会向低一级聚类缩放
-          zoomToBoundsOnClick: true,
-          //增加点位时增加聚合动画(否则会出问题)
-          animateAddingMarkers: true,
-          //最大缩放级别点击聚合图标展开图标
-          spiderfyOnMaxZoom:true,
-        });
-        if (!isSideBySide) {  //只有一个地图
-          if (this.codes.length != 1) {
-            modal.msgError("请输入一个地图code!");
-            return
-          }
-          getSuperMap(this.codes).then(resp => {
-            let mapList = resp.data;
-            if (mapList != null && mapList.length > 0) {
-              let url = mapList[0].url;
-              let centerLat = mapList[0].centerLat;
-              let centerLng = mapList[0].centerLng;
-              let zoom = mapList[0].zoom;  //默认比例
-              let maxZoom = mapList[0].maxZoom;  //最大比例
-              let minZoom = mapList[0].minZoom; //最小比例
-              let zoomControl = mapList[0].zoomControl == null ? true : mapList[0].zoomControl;  //地图缩放+-号是否显示
-              let attributionControl = mapList[0].attributionControl == null ? true : mapList[0].attributionControl; //logo是否显示
-              let logoControl = mapList[0].logoControl == null ? false : mapList[0].logoControl; //logo是否显示
-              let dragging = mapList[0].dragging == null ? true : mapList[0].dragging; //地图是否允许鼠标拖拽
-
-              let defaultConfigure = {
-                crs: window.L.CRS.EPSG4326,
-                center: [centerLat, centerLng],
-                maxZoom: maxZoom,
-                minZoom: minZoom,
-                zoom: zoom,
-                editable: true,
-                zoomControl: zoomControl,
-                attributionControl: attributionControl,
-                dragging: dragging,
-                logoControl: logoControl
-              };
-              let loadConfiguration = Object.assign(defaultConfigure, mapSite);
-              this.map = window.L.map(this.mapDiv, loadConfiguration);
-              //鼠标双击落点
-              if (this.showLatLng != undefined) {
-                let icon = new window.L.Icon({
-                  iconUrl: iconList['marker'],
-                  iconSize: [48, 48],
-                  iconAnchor: [24, 40],
-                  popupAnchor: [-3, -40],
-                  shadowSize: [41, 41],
-                })
-
-                this.map.on('dblclick', function (e) {
-                  _that.clearP();
-                  _that.showLatLng(e.latlng.lat, e.latlng.lng);
-                  let marker = window.L.marker([e.latlng.lat, e.latlng.lng], {
-                    icon: icon
-                  }).addTo(_that.map);
-                  _that.latLngLayers.push(marker)
-                  _that.latLngGroup = window.L.layerGroup(_that.latLngLayers)
-                  _that.map.addLayer(_that.latLngGroup)
-                })
-              }
-              //鼠标绘制区域
-              if (this.showAreaLatLng != undefined) {
-                var editableLayers = new window.L.FeatureGroup();
-                this.map.addLayer(editableLayers);
-                let options = {
-                  position: 'topleft',
-                  draw: {
-                    polyline: null,
-                    polygon: {},
-                    circle: null,
-                    rectangle: null,
-                    circlemarker: null,
-                    marker: null,
-                    remove: {}
-                  },
-                  edit: {
-                    featureGroup: editableLayers,
-                    remove: true
-                  }
-                };
-                var drawControl = new window.L.Control.Draw(options);
-                this.map.addControl(drawControl);
-                this.map.on(window.L.Draw.Event.CREATED, function (e) {
-                  let editableLayer = e.layer;
-                  let layerType = e.layerType;
-                  if (layerType === "polygon"||layerType === "rectangle") {
-                    let latlng = editableLayer.getLatLngs()[0];
-                    _that.showAreaLatLng(latlng)
-                  }
-                  editableLayers.addLayer(editableLayer);
-                });
-              }
-              //鼠标绘制线段
-              if (this.showLineLatLng != undefined) {
-                var editableLayers = new window.L.FeatureGroup();
-                this.map.addLayer(editableLayers);
-                let options = {
-                  position: 'topleft',
-                  draw: {
-                    polyline: {},
-                    polygon: null,
-                    circle: null,
-                    rectangle: null,
-                    circlemarker: null,
-                    marker: null,
-                    remove: {}
-                  },
-                  edit: {
-                    featureGroup: editableLayers,
-                    remove: true
-                  }
-                };
-                var drawControl = new window.L.Control.Draw(options);
-                this.map.addControl(drawControl);
-                this.map.on(window.L.Draw.Event.CREATED, function (e) {
-                  let editableLayer = e.layer;
-                  let layerType = e.layerType;
-                  if (layerType === "polyline") {
-                    let latlng = editableLayer.getLatLngs();
-                    _that.showLineLatLng(latlng)
-                  }
-                  editableLayers.addLayer(editableLayer);
-                });
-              }
-              window.L.supermap.tiledMapLayer(url).addTo(_that.map);
-            }
-          })
-        } else {  //卷帘地图
-          if (this.codes.length != 2) {
-            modal.msgError("请输入两个地图code!");
-            return
-          }
-          getSuperMap(this.codes).then(resp => {
-            let mapList = resp.data;
-            if (mapList != null && mapList.length == 2) {
-              let stamenurl = mapList[0].url;
-              let osmurl = mapList[1].url;
-              let centerLat = mapList[0].centerLat;
-              let centerLng = mapList[0].centerLng;
-              let zoom = mapList[0].zoom;  //默认比例
-              let maxZoom = mapList[0].maxZoom;  //最大比例
-              let minZoom = mapList[0].minZoom; //最小比例
-              let zoomControl = mapList[0].zoomControl == null ? true : mapList[0].zoomControl;  //地图缩放+-号是否显示
-              let attributionControl = mapList[0].attributionControl == null ? true : mapList[0].attributionControl; //logo是否显示
-              let logoControl = mapList[0].logoControl == null ? false : mapList[0].logoControl; //logo是否显示
-              let dragging = mapList[0].dragging == null ? true : mapList[0].dragging; //地图是否允许鼠标拖拽
-
-              let defaultConfigure = {
-                crs: window.L.CRS.EPSG4326,
-                center: [centerLat, centerLng],
-                maxZoom: maxZoom,
-                minZoom: minZoom,
-                zoom: zoom,
-                editable: true,
-                zoomControl: zoomControl,
-                attributionControl: attributionControl,
-                dragging: dragging,
-                logoControl: logoControl
-              };
-
-              let loadConfiguration = Object.assign(defaultConfigure, mapSite);
-              this.map = window.L.map(this.mapDiv, loadConfiguration);
-              //鼠标双击落点
-              if (this.showLatLng != undefined) {
-                let icon = new window.L.Icon({
-                  iconUrl: iconList['marker'],
-                  iconSize: [48, 48],
-                  iconAnchor: [24, 40],
-                  popupAnchor: [-3, -40],
-                  shadowSize: [41, 41],
-                })
-
-                _that.map.on('dblclick', function (e) {
-                  _that.clearP();
-                  _that.showLatLng(e.latlng.lat, e.latlng.lng);
-                  let marker = window.L.marker([e.latlng.lat, e.latlng.lng], {
-                    icon: icon
-                  }).addTo(_that.map);
-                  _that.latLngLayers.push(marker)
-                  _that.latLngGroup = window.L.layerGroup(_that.latLngLayers)
-                  _that.map.addLayer(_that.latLngGroup)
-                })
-              }
-              //鼠标绘制区域
-              if (this.showAreaLatLng != undefined) {
-                var editableLayers = new window.L.FeatureGroup();
-                this.map.addLayer(editableLayers);
-                let options = {
-                  position: 'topleft',
-                  draw: {
-                    polyline: null,
-                    polygon: {},
-                    circle: null,
-                    rectangle: null,
-                    circlemarker: null,
-                    marker: null,
-                    remove: {}
-                  },
-                  edit: {
-                    featureGroup: editableLayers,
-                    remove: true
-                  }
-                };
-                var drawControl = new window.L.Control.Draw(options);
-                this.map.addControl(drawControl);
-                this.map.on(window.L.Draw.Event.CREATED, function (e) {
-                  let editableLayer = e.layer;
-                  let layerType = e.layerType;
-                  editableLayer.on('dblclick', function (e) {
-                    if (layerType === "polygon"||layerType === "rectangle") {
-                      let latlng = editableLayer.getLatLngs()[0];
-                      _that.showAreaLatLng(latlng)
-                    }
-                  })
-                  editableLayers.addLayer(editableLayer);
-                });
-              }
-              //鼠标绘制线段
-              if (this.showLineLatLng != undefined) {
-                var editableLayers = new window.L.FeatureGroup();
-                this.map.addLayer(editableLayers);
-                let options = {
-                  position: 'topleft',
-                  draw: {
-                    polyline: {},
-                    polygon: null,
-                    circle: null,
-                    rectangle: null,
-                    circlemarker: null,
-                    marker: null,
-                    remove: {}
-                  },
-                  edit: {
-                    featureGroup: editableLayers,
-                    remove: true
-                  }
-                };
-                var drawControl = new window.L.Control.Draw(options);
-                this.map.addControl(drawControl);
-                this.map.on(window.L.Draw.Event.CREATED, function (e) {
-                  let editableLayer = e.layer;
-                  let layerType = e.layerType;
-                  editableLayer.on('dblclick', function (e) {
-                    if (layerType === "polyline") {
-                      let latlng = editableLayer.getLatLngs();
-                      _that.showLineLatLng(latlng)
-                    }
-                  })
-                  editableLayers.addLayer(editableLayer);
-                });
-              }
-
-              let stamenLayer = window.L.supermap.tiledMapLayer(stamenurl).addTo(this.map);
-              let osmLayer = window.L.supermap.tiledMapLayer(osmurl).addTo(this.map);
-              L.control.sideBySide(stamenLayer, osmLayer).addTo(this.map);
-            }
-          })
-        }
-      },
-      // 获取面积
-      /**
-       * polygon [{lat:30,lng:104},{lat:30,lng:104},{lat:30,lng:104}]
-       */
-      formatArea: function (polygon) {
-        //L.GeometryUtil.geodesicArea(),返回number类型的数据,单位是平方米,这里做了一下转化
-        var seeArea = window.L.GeometryUtil.geodesicArea(polygon);
-        let area = (seeArea / 10e5).toFixed(2) + "k㎡";
-        return area;
-      },
-      // 获取长度
-      /**
-       * line[{lat:30,lng:104},{lat:30,lng:104},{lat:30,lng:104}]
-       */
-      formatLength: function (line) {
-        let dis = 0;
-        for (let i = 0; i < line.length - 1; i++) {
-          let start = line[i];
-          let end = line[i + 1];
-          dis += window.L.latLng([start.lat, start.lng]).distanceTo([end.lat, end.lng]);//计算两个点之间的距离,并累加
-        }
-        //结果得到的也是number类型,单位是 米
-        return (dis / 10e2).toFixed(2) + "km";
-      },
-      setMarkers: function(markersList) { //地图标点
-        const _that = this
-        for (let i = 0; i < markersList.length; i++) {
-          let isAggregation = markersList[i].isAggregation == null ? false : markersList[i]
-            .isAggregation //是否聚合点位
-          let keepBindPopup = isAggregation == true ? false : markersList[i].keepBindPopup //提示气泡是否一直显示
-
-          let icon = new window.L.Icon({
-            iconUrl: iconList[markersList[i].icon],
-            iconSize: [48, 48],
-            iconAnchor: [24, 40],
-            popupAnchor: [-3, -40],
-            shadowSize: [41, 41]
-          })
-          let markerClick = window.L.marker([markersList[i].lat, markersList[i].lng], {
-            icon: icon
-          })
-          if (markersList[i].bindPopupHtml != null && markersList[i].bindPopupHtml !== '') {
-            let html = markersList[i].bindPopupHtml
-            if (keepBindPopup) {
-              markerClick.bindPopup(html, {
-                autoClose: false,
-                closeOnClick: null,
-                closeButton: false
-              }).openPopup(markerClick.getLatLng())
-            } else {
-              markerClick.on('mouseover', function() {
-                let html = markersList[i].bindPopupHtml
-                this.bindPopup(html).openPopup(this.getLatLng())
-              }).on('mouseout', function() {
-                this.closePopup()
-              })
-            }
-          }
-          if (markersList[i].click != null && markersList[i].click !== '') {
-            if (markersList[i].parameter != null && markersList[i].parameter !== '') {
-              markerClick.on('click', function() {
-                let clickName = markersList[i].click
-                _that.$emit(clickName, markersList[i].parameter)
-              })
-            } else {
-              markerClick.on('click', function() {
-                let clickName = markersList[i].click
-                _that.$emit(clickName)
-              })
-            }
-          }
-          if (isAggregation) {
-            _that.isAggregationLayers.addLayer(markerClick)
-            _that.isAggregationMyGroup = window.L.layerGroup(_that.isAggregationLayers)
-          } else {
-            _that.layers.push(markerClick)
-            _that.myGroup = window.L.layerGroup(_that.layers)
-          }
-        }
-        if (_that.myGroup != undefined && _that.myGroup != false) {
-          _that.map.addLayer(_that.myGroup)
-        }
-        _that.map.addLayer(_that.isAggregationLayers)
-      },
-      clearM: async function(isAggregation) { //清理地图标点
-        if (isAggregation) {
-          if (this.isAggregationMyGroup != undefined && this.isAggregationMyGroup != false) {
-            this.isAggregationMyGroup.clearLayers()
-          }
-          this.map.removeLayer(this.isAggregationLayers)
-          this.isAggregationLayers = []
-          this.radiusLayers = []
-          this.isAggregationLayers = window.L.markerClusterGroup({
-            //设置为true时显示聚类所占据的范围
-            showCoverageOnHover: true,
-            //设置为true时会向低一级聚类缩放
-            zoomToBoundsOnClick: true,
-            //增加点位时增加聚合动画(否则会出问题)
-            animateAddingMarkers: true,
-            //最大缩放级别点击聚合图标展开图标
-            spiderfyOnMaxZoom: true
-          })
-        } else {
-          if (this.myGroup != undefined && this.myGroup != false) {
-            this.myGroup.clearLayers()
-          }
-          this.map.removeLayer(this.layers)
-          this.layers = []
-        }
-      },
-      setMarkersRadius: function (markersList) {//地图标点带范围
-        const _that = this;
-        for (let i = 0; i < markersList.length; i++) {
-          let isAggregation = markersList[i].isAggregation == null ? false : markersList[i].isAggregation;  //是否聚合点位
-          let keepBindPopup = isAggregation == true ? false : markersList[i].keepBindPopup;  //提示气泡是否一直显示
-
-          _that.polygon = window.L.circle([markersList[i].lat, markersList[i].lng], {radius: markersList[i].radius * 1000});
-          let icon = new window.L.Icon({//传感器
-            iconUrl: iconList[markersList[i].icon],
-            iconSize: [48, 48],
-            iconAnchor: [24, 40],
-            popupAnchor: [-3, -40],
-            shadowSize: [41, 41],
-          })
-          let marker = window.L.marker([markersList[i].lat, markersList[i].lng], {
-            icon: icon
-          });
-          if (markersList[i].bindPopupHtml != null && markersList[i].bindPopupHtml !== "") {
-            let html = markersList[i].bindPopupHtml;
-            if (keepBindPopup) {
-              marker.bindPopup(html, {
-                autoClose: false,
-                closeOnClick: null,
-                closeButton: false
-              }).openPopup(marker.getLatLng());
-            } else {
-              marker.on('mouseover', function () {
-                let html = markersList[i].bindPopupHtml;
-                this.bindPopup(html).openPopup(this.getLatLng());
-              }).on('mouseout', function () {
-                this.closePopup();
-              })
-            }
-          }
-          if (markersList[i].click != null && markersList[i].click != "") {
-            if(markersList[i].parameter != null && markersList[i].parameter !== ""){
-              marker.on('click', function () {
-                let clickName = markersList[i].click;
-                _that.$emit(clickName,markersList[i].parameter);
-              })
-            }else{
-              marker.on('click', function () {
-                let clickName = markersList[i].click;
-                _that.$emit(clickName);
-              })
-            }
-          }
-          marker.addTo(this.map);
-
-
-          if (isAggregation) {
-            _that.isAggregationLayers.addLayer(marker);
-            _that.radiusLayers.push(_that.polygon);
-            this.map.addLayer(_that.isAggregationLayers);
-            _that.isAggregationMyGroup = window.L.layerGroup(_that.radiusLayers)
-            this.map.addLayer(_that.isAggregationMyGroup)
-          } else {
-            _that.layers.push(marker);
-            _that.layers.push(_that.polygon);
-            _that.myGroup = window.L.layerGroup(_that.layers)
-            this.map.addLayer(_that.myGroup)
-          }
-        }
-      },
-      setConnectList: function (connectList, color) {//地图画线
-        const _that = this;
-        let points = [];
-        for (let i = 0; i < connectList.length; i++) {
-          points.push([connectList[i].lat, connectList[i].lng]);//创建点
-        }
-        let polyline = window.L.polyline(points, {color: color});
-        _that.connectLayer = window.L.featureGroup().addTo(this.map);
-        _that.connectLayer.addLayer(polyline);
-      },
-      // setGraphicsList: function (graphicsList, color) {//地图图形
-      //   const _that = this;
-      //   let points = [];
-      //   for (let i = 0; i < graphicsList.length; i++) {
-      //     points.push([graphicsList[i].lat, graphicsList[i].lng]);//创建点
-      //   }
-      //   let polygon = window.L.polygon(points, {color: color});
-      //   polygon.addTo(this.map);
-      //   _that.graphicsLayer = window.L.featureGroup().addTo(this.map);
-      //   _that.graphicsLayer.addLayer(polygon);
-      // },
-      setGraphicsList: function (graphicsList, color,name) {//地图图形
-        const _that = this;
-        let points = [];
-        let polygons = new Map(); // 使用 Map 记录 Polygon 和对应的 Popup
-        for (let i = 0; i < graphicsList.length; i++) {
-          points.push([graphicsList[i].lat, graphicsList[i].lng]);//创建点
-        }
-        if (name){
-          let polygon = window.L.polygon(points, {color: color}); // 创建 Polygon
-          let center = polygon.getBounds().getCenter();
-          let namePopup = window.L.popup().setLatLng([center.lat, center.lng])
-            .setContent(name); // 创建对应的 Popup
-          namePopup.addTo(this.map);
-          polygon.bindPopup(namePopup); // 将 Popup 绑定到 Polygon
-          polygon.addTo(this.map);
-          _that.graphicsLayer = window.L.featureGroup().addTo(this.map);
-          _that.graphicsLayer.addLayer(polygon);
-
-          polygons.set(polygon, namePopup); // 将 Polygon 和 Popup 记录在 Map 中
-          // 在需要移除时,可以通过 polygons.get(polygon).remove() 移除对应的 Popup
-        }else {
-            let polygon = window.L.polygon(points, {color: color});
-            polygon.addTo(this.map);
-            _that.graphicsLayer = window.L.featureGroup().addTo(this.map);
-            _that.graphicsLayer.addLayer(polygon);
-        }
-
-
-      },
-      dropLocation: function (lat, lng) {//落点定位
-        this.controlLevel(10)
-        setTimeout(() => {
-          this.map.panTo([lat, lng]);
-        },500)
-      },
-      controlLevel: function (level) {//控制地图缩放级别
-        this.map.setZoom(level)
-      },
-      layerSwitching: function (url,isClear) {//图层切换  url 图层地址   isClear  是否清除图层
-        if(isClear){
-          if(this.deckglLayer!=null){
-            this.deckglLayer.remove()
-          }
-        }
-        this.deckglLayer = window.L.supermap.tiledMapLayer(url,{
-        });
-        this.map.addLayer(this.deckglLayer);
-      },
-
-
-
-    }
-  }
-</script>
-
-<style scoped>
-
-</style>

+ 18 - 5
data-ui/src/views/data/digitaltraffic/level/IForm.vue

@@ -93,7 +93,7 @@
   import {getLevel} from "../../../../api/data/digitalresources/level";
   import {getLevel} from "../../../../api/data/digitalresources/level";
 
 
   const uuidv4 = require("uuid/v4")
   const uuidv4 = require("uuid/v4")
-  import supermap from "@/views/components/supermap-2.5d-multiple"; //超图
+  import supermap from "@/views/components/supermap-2.5d.vue"; //超图
   import ITabs from './ITabs.vue'
   import ITabs from './ITabs.vue'
   import Treeselect from "@riophae/vue-treeselect";
   import Treeselect from "@riophae/vue-treeselect";
   import "@riophae/vue-treeselect/dist/vue-treeselect.css";
   import "@riophae/vue-treeselect/dist/vue-treeselect.css";
@@ -197,13 +197,26 @@
       showMap() {
       showMap() {
         this.showLongitude = true;
         this.showLongitude = true;
         this.uuid = uuidv4();
         this.uuid = uuidv4();
+        let state = undefined;
+        if (this.$route.query.type == '2'){
+          state=4;
+        }
+        if (this.$route.query.type == '3'){
+          state=7;
+        }
+        if (this.$route.query.type == '1'){
+          state=2;
+        }
+        if (this.$route.query.type == '6'){
+          state=8;
+        }
         setTimeout(() => {
         setTimeout(() => {
           this.$refs.supermap.clearM(false);
           this.$refs.supermap.clearM(false);
-          this.$refs.supermap.superMapInfo(this.sign, {longitude: this.form.longitude, latitude: this.form.latitude});
+          this.$refs.supermap.superMapInfo(this.sign, {longitude: this.form.longitude, latitude: this.form.latitude},null,state);
         }, 500);
         }, 500);
-        setTimeout(() => {
-          this.form.type == 1 ? this.$refs.supermap.loadLindi() : (this.form.type == 2 ? this.$refs.supermap.loadShuixi() : (this.form.type == 3 ? this.$refs.supermap.loadRoad() : this.$refs.supermap.loadNongtian()))
-        }, 10000);
+        // setTimeout(() => {
+        //   this.form.type == 1 ? this.$refs.supermap.loadLindi() : (this.form.type == 2 ? this.$refs.supermap.loadShuixi() : (this.form.type == 3 ? this.$refs.supermap.loadRoad() : this.$refs.supermap.loadNongtian()))
+        // }, 10000);
       },
       },
       putSmUserID_layer: function (entity) {
       putSmUserID_layer: function (entity) {
         if (entity != undefined && entity != null) {
         if (entity != undefined && entity != null) {

+ 2 - 2
data-ui/src/views/data/generalbusiness/keyProjects/index.vue

@@ -1029,8 +1029,8 @@ export default {
       this.$nextTick(() => {
       this.$nextTick(() => {
         this.$refs.ISuperMaptwo.init(this.sign, {
         this.$refs.ISuperMaptwo.init(this.sign, {
           id: this.form.id,
           id: this.form.id,
-          parkLongitude: this.form.longitude,
-          parkLatitude: this.form.latitude,
+          longitude: this.form.parkLongitude,
+          latitude: this.form.parkLatitude,
           xiantude: this.form.longitude//this.form.longitude换成每个页面对应线或者面对应的字段
           xiantude: this.form.longitude//this.form.longitude换成每个页面对应线或者面对应的字段
         })
         })
       })
       })

+ 0 - 5
src/main/java/com/sooka/sponest/data/SookaDataApplication.java

@@ -3,18 +3,13 @@ package com.sooka.sponest.data;
 import com.ruoyi.common.security.annotation.EnableCustomConfig;
 import com.ruoyi.common.security.annotation.EnableCustomConfig;
 import com.ruoyi.common.security.annotation.EnableRyFeignClients;
 import com.ruoyi.common.security.annotation.EnableRyFeignClients;
 import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
 import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
-import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 
 
 @EnableCustomConfig
 @EnableCustomConfig
 @EnableCustomSwagger2
 @EnableCustomSwagger2
 @EnableRyFeignClients
 @EnableRyFeignClients
 @SpringBootApplication(scanBasePackages = {"com.sooka", "com.ruoyi"})
 @SpringBootApplication(scanBasePackages = {"com.sooka", "com.ruoyi"})
-@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
-@MapperScan("com.sooka.sponest.data.**.mapper")
 public class SookaDataApplication {
 public class SookaDataApplication {
 
 
     public static void main(String[] args) {
     public static void main(String[] args) {

+ 1 - 6
src/main/resources/bootstrap.yml

@@ -6,9 +6,6 @@ spring:
   application:
   application:
     # 应用名称
     # 应用名称
     name: sooka-sponest-center-data
     name: sooka-sponest-center-data
-  logging:
-    level:
-          com.it.BrandMapper: debug
   profiles:
   profiles:
     # 环境配置
     # 环境配置
     active: dev
     active: dev
@@ -24,6 +21,4 @@ spring:
         file-extension: yml
         file-extension: yml
         # 共享配置
         # 共享配置
         shared-configs:
         shared-configs:
-          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
-  main:
-    allow-bean-definition-overriding: true
+          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}