北京经济技术开发区经开区虚拟城市项目-【前端】-移动端Web
11
少年
2024-02-06 023e57a24b3ce05de8a8921387538ec7558f8fd3
11
已添加3个文件
已修改2个文件
2602 ■■■■■ 文件已修改
src/components/poplayer/main2.vue 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/poplayer/poplayer2.vue 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/viewer2.vue 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/map2 copy.js 2331 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/map2.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/poplayer/main2.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
<template>
  <div v-if="state.show">
      <poplayer :list="list" />
  </div>
</template>
<script>
import poplayer from "./poplayer2.vue";
import store from "@/utils/store";
export default {
  name: "Main",
  components: {
    poplayer,
  },
  data() {
    return {
      state: store.Poplayer,
    };
  },
  mounted() {
  },
};
</script>
<style scoped>
</style>
src/components/poplayer/poplayer2.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,138 @@
<template>
  <div style="z-index: 100000000">
    <div class="Poplayer">
      <div class="close" @click.stop="closehandle"></div>
      <div class="title">点位详情</div>
      <div class="content">
        <div class="con-item" v-for="(item, index) in KEY" :key="index">
          <span class="name">{{ index }}:</span>
          <span class="value">{{ state.list[item] }}</span>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
import store from "@/utils/store2";
import keys from "@/utils/poiKeys";
export default {
  name: "Main",
  components: {},
  props: {
    keys: {
      type: Object,
    },
    list: {
      type: Object,
    },
  },
  data() {
    return {
      state: store.Poplayer,
      KEY: {},
    };
  },
  computed: {},
  mounted() {
    if (this.list) {
      this.state.list = this.list;
    }
    this.KEY = keys[this.state.list.POITYPE];
  },
  watch: {
    "state.list": function (val) {
      this.KEY = keys[val.POITYPE];
    },
  },
  methods: {
    closehandle() {
      if (window.pickFeature && window.pickFeature.primitive) {
        window.pickFeature.primitive.image = window.imgUrl;
        window.pickFeature = null;
      }
      store.setPoplayerListAction({});
      divPoint3 && divPoint3.deleteObject();
      store.setPoplayerShowAction(false);
      if (window.tdglLine) {
        sgworld.Creator.DeleteObject(window.tdglLine);
        window.tdglLine = null;
      }
    },
  },
};
</script>
<style scoped>
.Poplayer {
  /* min-width: 350px; */
  width: 80vw;
  /* min-height: 180px; */
  background-repeat: no-repeat;
  background-size: 100% 100%;
  background-image: url("./img/bg.png");
  z-index: 999;
  color: #fff;
  font-family: SourceHanSansSC-R;
  /* padding: 20px; */
  padding: 10px 5px 10px 5px;
  box-sizing: border-box;
  font-size: 16px;
  pointer-events: all;
}
.title {
  text-align: center;
  font-size: 20px;
  font-weight: 700;
  letter-spacing: 4px;
  padding-left: 26px;
}
/* .title {
  display: none;
  width: 100%;
  height: 30px;
  line-height: 30px;
  padding-left: 20px;
  margin-top: 10px;
} */
.close {
  pointer-events: all;
  width: 28px;
  height: 28px;
  background-repeat: no-repeat;
  background-size: 100% 100%;
  background-image: url("./img/close.png");
  float: right;
  margin-top: 8px;
  margin-right: 5px;
  cursor: pointer;
}
.content {
  width: 100%;
  margin: auto;
}
.con-item {
  width: 90%;
  overflow: hidden;
  margin-bottom: 7px;
  margin-left: 25px;
  margin-right: 20px;
  word-break: break-all;
}
.name {
  /* min-width: 100px; */
  float: left;
}
.value {
  max-width: 400px;
  float: left;
  color: aqua;
}
</style>
src/components/viewer2.vue
@@ -4,8 +4,9 @@
    <div id="openlayerContainer" @click="clicktoclose"></div>
    <div id="ponitPanel">
      <div id="ponitPanel-close" @click.stop="closehandle"></div>
      <div class="title">点位详情</div>
      <div class="content">
      <div id="ponitPanel-content">
      </div>
@@ -86,7 +87,7 @@
import layerTreePanel from "./sideMenu/layerTreePanel/main2.vue";
import history from "./poplayer/history.vue";
import landAdminInfo from "./poplayer/landAdmin.vue";
import poplayer from "./poplayer/main.vue";
import poplayer from "./poplayer/main2.vue";
import sliderAlpha from "./sideMenu/sliderAlpha/main.vue";
import Axios from "axios";
@@ -184,7 +185,7 @@
        resolutions[z] = width / (256 * Math.pow(2, z));
        matrixIds[z] = z;
      }
      let wmtsTileGrid = new  ol.tilegrid.WMTS({
      let wmtsTileGrid = new ol.tilegrid.WMTS({
        origin: origin,
        resolutions: resolutions,
        matrixIds: matrixIds,
@@ -265,7 +266,7 @@
      setClick(true)
      // var url =
      //   "https://skyzt.bda.gov.cn/gisserver/tmsserver/chengshiguihua_dikuaibianhao_tms/";
      // var tmslayer = new ol.layer.Tile({
      //   source: new ol.source.XYZ({
      //     projection: projection,
@@ -418,7 +419,7 @@
  width: 100%;
  height: 100%;
  background: black;
  position: absolute !important;
  /* position: absolute !important; */
  z-index: 0;
}
@@ -456,7 +457,7 @@
}
#ponitPanel {
  display: none;
  /* display: none; */
  width: 80vw;
  background-repeat: no-repeat;
  background-size: 100% 100%;
@@ -465,13 +466,55 @@
  color: #fff;
  font-family: SourceHanSansSC-R;
  padding: 10px 5px 10px 5px;
  box-sizing: border-box;
  font-size: 16px;
  pointer-events: all;
  position: absolute;
  bottom: 12px;
  left: -50px;
}
.title {
  width: 100%;
  text-align: center;
  font-size: 20px;
  font-weight: 700;
  letter-spacing: 4px;
  padding-left: 26px;
}
#ponitPanel-close {
  pointer-events: all;
  width: 28px;
  height: 28px;
  background-repeat: no-repeat;
  background-size: 100% 100%;
  background-image: url("./poplayer/img/close.png");
  margin-top: 8px;
  margin-right: 5px;
  float: right;
  cursor: pointer;
}
#ponitPanel-content {
  width: 100%;
  margin: auto;
}
.ponitPanel-item {
  width: 90%;
  overflow: hidden;
  margin-bottom: 7px;
  margin-left: 25px;
  margin-right: 20px;
  word-break: break-all;
}
.ponitPanel-name {
  /* min-width: 100px; */
  float: left;
}
.ponitPanel-value {
  max-width: 400px;
  float: left;
  color: aqua;
}
</style>
src/utils/map2 copy.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2331 @@
// import { Feature } from "ol";
// import VectorLayer from "ol/layer/Vector";
// import VectorSource from "ol/source/Vector";
// import { Style, Icon, Fill, Stroke, Text, Circle as CircleStyle } from "ol/style";
// import { Point, LineString } from "ol/geom";
// import Overlay from 'ol/Overlay.js';
// import { unByKey } from "ol/Observable.js"; //移除事件
import Vue from 'vue';
import axios from "axios";
import _GLOBAL from '@/assets/GLOBAL2';
import poiLayer from '@/components/poplayer/main';
import store from "@/utils/store2";
import { Message } from 'element-ui';
let tdglLine, qiyexinxi, qysl, ydbm, ydlx, cyfx, crzt, ydmj, crnx, crnf, rjl, jzxg, jzmd;
let objdata;
var clickEvent;
window.tdglLine = tdglLine
let PoiLayerConstructor = Vue.extend(poiLayer);
/**核心区 */
export function loadHXQ() {
    let urls = window.gisBaseUrl + "/gisserver/wmsserver/YZ_BJ60";
    window.HXQ = sgworld.Creator.createImageryProvider('hxqgisserver', "wms", {
        url: urls,
        layers: '',
        parameters: {
            format: "image/png",
            transparent: true,
        }
    }, "0", undefined, true, function () {
        Viewer.camera.flyTo({
            destination: Cesium.Cartesian3.fromDegrees(116.52556, 39.71046, 34189.97),
            orientation: {//设置相机的Heading,Pitch,Roll,参照上图
                heading: Cesium.Math.toRadians(360.0),
                pitch: Cesium.Math.toRadians(-90.0),
                roll: 0.0
            },
            duration: 3
        });
    });
}
/**经开区 */
export function loadJKQ() {
    let urls = window.gisBaseUrl + "/gisserver/wmsserver/YZ_BJ";
    window.JKQ = sgworld.Creator.createImageryProvider('jkqgisserver', "wms", {
        url: urls,
        layers: '',
        parameters: {
            format: "image/png",
            transparent: true,
        }
    }, "0", undefined, true, function () {
        Viewer.camera.flyTo({
            destination: Cesium.Cartesian3.fromDegrees(116.52902, 39.67853, 59383.65),
            orientation: {//设置相机的Heading,Pitch,Roll,参照上图
                heading: Cesium.Math.toRadians(360.0),
                pitch: Cesium.Math.toRadians(-90.0),
                roll: 0.0
            },
            duration: 3
        });
    });
}
/**乡镇 */
export function loadXZ() {
    let urls = window.gisBaseUrl + "/gisserver/wmsserver/xiangzhen";
    window.XZ = sgworld.Creator.createImageryProvider('xzgisserver', "wms", {
        url: urls,
        layers: '',
        parameters: {
            format: "image/png",
            transparent: true,
        }
    }, "0", undefined, true, function () {
        Viewer.camera.flyTo({
            destination: Cesium.Cartesian3.fromDegrees(116.55718, 39.65440, 53149.25),
            orientation: {//设置相机的Heading,Pitch,Roll,参照上图
                heading: Cesium.Math.toRadians(360.0),
                pitch: Cesium.Math.toRadians(-90.0),
                roll: 0.0
            },
            duration: 3
        });
    });
}
/**窨井 */
export function loadManhole() {
    window.clusterLayer && window.clusterLayer.clear();
    axios
        .get(window.gisBaseUrl + '/gisserver/wfsserver/yinjing?version=1.3.0&request=GetFeature&format=json&typename=yz井数据')
        .then(res => {
            // let manholeList = JSON.parse(res.data);
            store.setLayerPanelShow(false);
            res.data.features.forEach((item, index) => {
                window.clusterLayer.add(
                    new SmartEarth.Degrees(item.geometry.coordinates[0], item.geometry.coordinates[1], 15),
                    {
                        name: `YINJ-${item.properties.ID}-${item.properties['井名称']}-${item.properties['井深']}-${item.properties['井类型']}-${item.properties['井编号']}-${item.properties['位置']}-${item.properties['标段备注']}-${item.properties['行政区编码']}-${item.geometry.coordinates[0]}-${item.geometry.coordinates[1]}`,
                        image: SmartEarthRootUrl + 'Workers/image/mark.png',
                        scale: 0.5
                    }
                )
            });
            Viewer.camera.flyTo({
                destination: Cesium.Cartesian3.fromDegrees(116.54555, 39.74727, 20565.49),
                orientation: {//设置相机的Heading,Pitch,Roll,参照上图
                    heading: Cesium.Math.toRadians(360.0),
                    pitch: Cesium.Math.toRadians(-90.0),
                    roll: 0.0
                },
                duration: 3
            });
        })
    // let url = window.gisBaseUrl + '/gisserver/wfsserver/yinjing';
    // let sgwfs = new SmartEarth.WFSTool(Viewer);
    // sgwfs.CreateWfs('point', {
    //     urls: url,
    //     layer: 'yz井数据',
    //     text: '[井名称]',
    //     image: SmartEarthRootUrl + 'Workers/image/mark.png',
    //     //offsetX: 20,
    //     offsetY: -40,
    //     color: '#de3',
    //     disableDepthTestDistance: Infinity
    // })
}
/**企业 */
export function loadEnterprise() {
    new Cesium.GeoJsonDataSource.load(
        window.gisBaseUrl + '/gisserver/wfsserver/qiyelianqiye?version=1.3.0&request=GetFeature&format=json&typename=企业链企业'
    )
        // axios.get(window.gisBaseUrl + '/gisserver/wfsserver/qiyelianqiye?version=1.3.0&request=GetFeature&format=json&typename=企业链企业')
        .then(dataSource => {
            console.log(dataSource);
            store.qiyeJsonInfo = dataSource
        })
        .catch((err) => {
            console.log(err);
        });
}
// export function loadEnterprise() {
//     window.clusterLayer && window.clusterLayer.clear();
//     axios
//         .get(window.gisBaseUrl + '/gisserver/wfsserver/qiyelianqiye?version=1.3.0&request=GetFeature&format=json&typename=企业链企业')
//         .then(res => {
//             // let manholeList = JSON.parse(res.data);
//             store.setLayerPanelShow(false);
//             res.data.features.forEach((item, index) => {
//                 window.clusterLayer.add(
//                     new SmartEarth.Degrees(item.geometry.coordinates[0], item.geometry.coordinates[1], 15),
//                     {
//                         name: `QY&${item.properties.ID}&${item.properties['QYMC']}&${item.properties['DZ']}&${item.properties['BZDZ']}&${item.properties['XYDM']}&${item.geometry.coordinates[0]}&${item.geometry.coordinates[1]}`,
//                         image: SmartEarthRootUrl + 'Workers/image/mark.png',
//                         scale: 0.5
//                     }
//                 )
//             });
//             Viewer.camera.flyTo({
//                 destination: Cesium.Cartesian3.fromDegrees(116.54555, 39.74727, 20565.49),
//                 orientation: {//设置相机的Heading,Pitch,Roll,参照上图
//                     heading: Cesium.Math.toRadians(360.0),
//                     pitch: Cesium.Math.toRadians(-90.0),
//                     roll: 0.0
//                 },
//                 duration: 3
//             });
//         })
//     // let url = window.gisBaseUrl + '/gisserver/wfsserver/yinjing';
//     // let sgwfs = new SmartEarth.WFSTool(Viewer);
//     // sgwfs.CreateWfs('point', {
//     //     urls: url,
//     //     layer: 'yz井数据',
//     //     text: '[井名称]',
//     //     image: SmartEarthRootUrl + 'Workers/image/mark.png',
//     //     //offsetX: 20,
//     //     offsetY: -40,
//     //     color: '#de3',
//     //     disableDepthTestDistance: Infinity
//     // })
// }
/**摄像头 */
export function loadCamera() {
    window.clusterLayer && window.clusterLayer.clear();
    axios
        .get(window.gisBaseUrl + '/gisserver/wfsserver/YZ_SPJK_NEW_wfs?version=1.3.0&request=GetFeature&format=json&typename=摄像头0423')
        .then(res => {
            store.setLayerPanelShow(false);
            res.data.features.forEach((item, index) => {
                window.clusterLayer.add(
                    new SmartEarth.Degrees(item.geometry.coordinates[0], item.geometry.coordinates[1], 15),
                    {
                        name: `SPJK-${item.properties['IP地址']}-${item.properties['JK内码']}-${item.properties['JK区域']}-${item.properties['JK名称']}-${item.properties['JK类型']}-${item.properties['JK编号']}`,
                        image: SmartEarthRootUrl + 'Workers/image/mark1.png',
                        scale: 1
                    }
                )
            });
            Viewer.camera.flyTo({
                destination: Cesium.Cartesian3.fromDegrees(116.51463, 39.73972, 19586.80),
                orientation: {//设置相机的Heading,Pitch,Roll,参照上图
                    heading: Cesium.Math.toRadians(360.0),
                    pitch: Cesium.Math.toRadians(-90.0),
                    roll: 0.0
                },
                duration: 3
            });
        })
    // let url = window.gisBaseUrl + '/gisserver/wfsserver/YZ_SPJK_NEW_wfs';
    // let sgwfs2 = new SmartEarth.WFSTool(Viewer);
    // sgwfs2.CreateWfs('point', {
    //     urls: url,
    //     layer: '摄像头0423',
    //     text: '[JK名称]',
    //     image: SmartEarthRootUrl + 'Workers/image/mark.png',
    //     //offsetX: 20,
    //     offsetY: -40,
    //     color: '#de3',
    //     disableDepthTestDistance: Infinity
    // })
}
/**清除矢量地图 */
export function clearMap() {
    window.HXQ && window.HXQ.deleteObject();
    window.JKQ && window.JKQ.deleteObject();
    window.XZ && window.XZ.deleteObject();
}
// å·¦å‡»äº‹ä»¶
window.divPoint3 = null;
window.instance = null;
window.pickFeature = null;
window.imgUrl = null;
window.scale = null;
window.clickPOI = null
function read(wkt) {
    var regExes = {
        typeStr: /^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/,
        emptyTypeStr: /^\s*(\w+)\s*EMPTY\s*$/,
        spaces: /\s+/,
        parenComma: /\)\s*,\s*\(/,
        doubleParenComma: /\)\s*\)\s*,\s*\(\s*\(/, // can't use {2} here
        trimParens: /^\s*\(?(.*?)\)?\s*$/,
    };
    /**
     * Object with properties corresponding to the geometry types. Property values
     * are functions that do the actual parsing.
     * @private
     */
    var parse$1 = {
        /**
         * Return point geometry given a point WKT fragment.
         *
         * @param {String} str A WKT fragment representing the point.
         * @return {Point} A point geometry.
         * @private
         */
        point: function point(str) {
            if (str === undefined) {
                return [];
            }
            var coords = str.trim().split(regExes.spaces);
            return [Number.parseFloat(coords[0]), Number.parseFloat(coords[1])];
        },
        /**
         * Return a multipoint geometry given a multipoint WKT fragment.
         *
         * @param {String} str A WKT fragment representing the multipoint.
         * @return {Point} A multipoint feature.
         * @private
         */
        multipoint: function multipoint(str) {
            var this$1 = this;
            if (str === undefined) {
                return [];
            }
            var point;
            var points = str.trim().split(",");
            var components = [];
            for (var i = 0, len = points.length; i < len; ++i) {
                point = points[i].replace(regExes.trimParens, "$1");
                components.push(parse$1.point(point));
            }
            return components;
        },
        /**
         * Return a linestring geometry given a linestring WKT fragment.
         *
         * @param {String} str A WKT fragment representing the linestring.
         * @return {LineString} A linestring geometry.
         * @private
         */
        linestring: function linestring(str) {
            if (str === undefined) {
                return [];
            }
            var points = str.trim().split(",");
            var components = [];
            var coords;
            for (var i = 0, len = points.length; i < len; ++i) {
                coords = points[i].trim().split(regExes.spaces);
                components.push([
                    Number.parseFloat(coords[0]),
                    Number.parseFloat(coords[1]),
                ]);
            }
            return components;
        },
        /**
         * Return a linearring geometry given a linearring WKT fragment.
         *
         * @param {String} str A WKT fragment representing the linearring.
         * @return {LinearRing} A linearring geometry.
         * @private
         */
        linearring: function linearring(str) {
            if (str === undefined) {
                return [];
            }
            var points = str.trim().split(",");
            var components = [];
            var coords;
            for (var i = 0, len = points.length; i < len; ++i) {
                coords = points[i].trim().split(regExes.spaces);
                components.push([
                    Number.parseFloat(coords[0]),
                    Number.parseFloat(coords[1]),
                ]);
            }
            return components;
        },
        /**
         * Return a multilinestring geometry given a multilinestring WKT fragment.
         *
         * @param {String} str A WKT fragment representing the multilinestring.
         * @return {MultiLineString} A multilinestring geometry.
         * @private
         */
        multilinestring: function multilinestring(str) {
            var this$1 = this;
            if (str === undefined) {
                return [];
            }
            var line;
            var lines = str.trim().split(regExes.parenComma);
            var components = [];
            for (var i = 0, len = lines.length; i < len; ++i) {
                line = lines[i].replace(regExes.trimParens, "$1");
                components.push(parse$1.linestring(line));
            }
            return components;
        },
        /**
         * Return a polygon geometry given a polygon WKT fragment.
         *
         * @param {String} str A WKT fragment representing the polygon.
         * @return {Polygon} A polygon geometry.
         * @private
         */
        polygon: function polygon(str) {
            var this$1 = this;
            if (str === undefined) {
                return [];
            }
            var ring, linestring, linearring;
            var rings = str.trim().split(regExes.parenComma);
            var shell;
            var holes = [];
            //for (var i = 0, len = rings.length; i < len; ++i) {
            ring = rings[0].replace(regExes.trimParens, "$1");
            linestring = ring;
            //}
            return linestring;
        },
        /**
         * Return a multipolygon geometry given a multipolygon WKT fragment.
         *
         * @param {String} str A WKT fragment representing the multipolygon.
         * @return {MultiPolygon} A multipolygon geometry.
         * @private
         */
        multipolygon: function multipolygon(str) {
            var this$1 = this;
            if (str === undefined) {
                return [];
            }
            var polygon;
            var polygons = str.trim().split(regExes.doubleParenComma);
            var components = [];
            for (var i = 0, len = polygons.length; i < len; ++i) {
                polygon = polygons[i].replace(regExes.trimParens, "$1");
                components.push(parse$1.polygon(polygon));
            }
            return components;
        },
    };
    var geometry, type, str;
    wkt = wkt.replace(/[\n\r]/g, " ");
    var matches = regExes.typeStr.exec(wkt);
    if (wkt.search("EMPTY") !== -1) {
        matches = regExes.emptyTypeStr.exec(wkt);
        matches[2] = undefined;
    }
    if (matches) {
        type = matches[1].toLowerCase();
        str = matches[2];
        if (parse$1[type]) {
            geometry = parse$1[type].apply(this, [str]);
        }
    }
    if (geometry === undefined) {
        throw new Error("Could not parse WKT " + wkt);
    }
    return geometry;
}
export function leftClick() {
    try {
        // ç‚¹å‡»äº‹ä»¶
        let handler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas);
        // let nPickFeature;
        // é¼ æ ‡ç‚¹å‡»äº‹ä»¶
        handler.setInputAction(event => {
            window.clickPOI = sgworld.Navigate.getMouseDegrees(event);
            // console.log(window.clickPOI);
            if (window.clickPOI) {
                // éšè—åº•部图层面版
                store.setLayerPanelShow(false);
                // éšè—å³ä¸Šè§’菜单面板
                store.setMenuListShow(false);
                // éšè—åº•部漫游面板
                store.setRoamPanelShow(false);
            }
            // åœŸåœ°ç®¡ç†
            if (store.tdglInfo.flag) {
                axios
                    .get(
                        // "http://10.10.4.115:8022/geowinmap_xncs/ds?r=0.9158559377752831&serviceproviderid=map.vectorserviceprovider&serviceid=queryfeature&featcls=225%25E8%258C%2583%25E5%259B%25B4%25E5%2588%2586%25E5%258C%25BA%25E8%25A7%2584%25E5%2588%2592.geojson&lng=" +
                        window.gisBaseUrl + "yzxncsApi/geowinmap_xncs/ds?r=0.9158559377752831&serviceproviderid=map.vectorserviceprovider&serviceid=queryfeature&featcls=225%25E8%258C%2583%25E5%259B%25B4%25E5%2588%2586%25E5%258C%25BA%25E8%25A7%2584%25E5%2588%2592.geojson&lng=" +
                        window.clickPOI.lon +
                        "&lat=" +
                        window.clickPOI.lat +
                        "&geom=true&requesttype=json"
                    ).then(response => {
                        let center = { lon: 0, lat: 0 };
                        let polygon = read(response.data.geometry);
                        if (polygon.length > 0) {
                            var geometry = [];
                            let points = polygon[0].split(",");
                            for (let i = 0; i < points.length; i++) {
                                let point = points[i].replace(/^\s+|\s+$/g, "").split(" ");
                                center.lon += parseFloat(point[0]) / points.length;
                                center.lat += parseFloat(point[1]) / points.length;
                                geometry.push({
                                    x: parseFloat(point[0]),
                                    y: parseFloat(point[1]),
                                    z: 0,
                                });
                            }
                            if (window.tdglLine) {
                                sgworld.Creator.DeleteObject(window.tdglLine);
                                window.tdglLine = null;
                            }
                            window.tdglLine = sgworld.Creator.createPolyline(
                                geometry,
                                "#ff0000",
                                1,
                                0,
                                "线"
                            );
                            if (center.lon != 0 && center.lat != 0) {
                                Viewer.camera.flyTo({
                                    destination: Cesium.Cartesian3.fromDegrees(
                                        center.lon,
                                        center.lat,
                                        1000
                                    ),
                                    duration: 1.0,
                                });
                            }
                        }
                        if (center.lon != 0 && center.lat != 0) {
                            axios
                                .get(
                                    // "http://10.10.4.115:8022//poisearch/guihuacon/getInfo?ydbm=" +
                                    window.gisBaseUrl + "yzxncsApi/poisearch/guihuacon/getInfo?ydbm=" +
                                    response.data.NO
                                )
                                .then(
                                    info => {
                                        let data = info.data.data;
                                        if (data.yongdishuju === null) {
                                            objdata = {
                                                POITYPE: "NOTDGL",
                                                zwxx: "暂无信息",
                                                lon: window.clickPOI.lon,
                                                lat: window.clickPOI.lat,
                                            }
                                        } else {
                                            qiyexinxi = info.data.data.qiyexinxi;
                                            qysl = data.qiyexinxi.length;
                                            if (qysl > 0) {
                                                ydbm = data.qiyexinxi[0]["地块编号"];
                                            } else {
                                                ydbm = data.churangxinxi["ydbh"];
                                            }
                                            try {
                                                ydlx = data.yongdishuju["ydlxmc"];
                                            } catch (e) { }
                                            try {
                                                cyfx = data.yongdishuju["cyfx"];
                                            } catch (e) { }
                                            try {
                                                // this.crzt = response.data["ZT"];
                                                switch (response.data["ZT"]) {
                                                    case 3:
                                                        crzt = "已出让";
                                                        break;
                                                    case 4:
                                                        crzt = "未出让";
                                                        break;
                                                }
                                            } catch (e) { }
                                            try {
                                                ydmj = parseFloat(
                                                    "" + data.yongdishuju["ydmj"]
                                                ).toFixed(0);
                                            } catch (e) { }
                                            try {
                                                crnx = data.churangxinxi["crnx"];
                                            } catch (e) { }
                                            try {
                                                crnf = data.churangxinxi["crnf"];
                                            } catch (e) { }
                                            try {
                                                rjl = data.yongdishuju["rjl"];
                                            } catch (e) { }
                                            try {
                                                jzxg = data.yongdishuju["jzxg"];
                                            } catch (e) { }
                                            try {
                                                jzmd = data.yongdishuju["jzmd"];
                                            } catch (e) { }
                                            objdata = {
                                                POITYPE: "TDGL",
                                                ydbm,
                                                ydlx,
                                                cyfx,
                                                crzt,
                                                ydmj,
                                                ydbm,
                                                crnx,
                                                crnf,
                                                rjl,
                                                jzxg,
                                                jzmd,
                                                lon: window.clickPOI.lon,
                                                lat: window.clickPOI.lat,
                                            }
                                        }
                                        store.setTdglShow(false);
                                        store.setTdlgInfo({});
                                        store.setTdglShow(true);
                                        store.setTdlgInfo(objdata);
                                        // divPoint3 && divPoint3.deleteObject();
                                        // store.setPoplayerShowAction(false);
                                        // store.setPoplayerListAction({});
                                        // store.setPoplayerShowAction(true);
                                        // store.setPoplayerListAction(objdata);
                                        // if (window.instance) {
                                        //     window.instance.$destroy();
                                        // }
                                        // window.instance = new PoiLayerConstructor({
                                        //     data: {
                                        //         list: objdata
                                        //     }
                                        // });
                                        // window.instance.$mount();
                                        // divPoint3 = window.sgworld.Creator.createDivPoint('', {
                                        //     lon: objdata.lon,
                                        //     lat: objdata.lat,
                                        //     height: 5
                                        // }, {
                                        //     type: "custom",
                                        //     offset: ["c", 20],
                                        //     description: window.instance.$el,
                                        //     near: 0,
                                        //     far: 100000
                                        // });
                                    }
                                );
                        }
                    })
            }
            let nPickFeature = sgworld.Viewer.scene.pick(event.position);
            // console.log(nPickFeature);
            // if (nPickFeature == undefined) {
            //     window.flyPoint && Viewer.entities.remove(window.flyPoint);
            //     window.flyPoint = undefined;
            // }
            // console.log(event.position);//屏幕位置
            if (!nPickFeature || !nPickFeature.id) {
                return
            } else if (nPickFeature.primitive instanceof Cesium.Billboard) {
                let cartographic =
                    window.Viewer.scene.globe.ellipsoid.cartesianToCartographic(
                        nPickFeature.primitive.position
                    );
                let lon = Cesium.Math.toDegrees(cartographic.longitude);
                let lat = Cesium.Math.toDegrees(cartographic.latitude);
                let p = sgworld.Navigate.getDegrees();
                let flyHeight
                if (p.height > 2000) {
                    flyHeight = p.height / 1.8
                } else if (p.height > 500) {
                    flyHeight = 500
                } else {
                    flyHeight = p.height
                }
                // console.log(p);
                Viewer.camera.flyTo({
                    destination: Cesium.Cartesian3.fromDegrees(
                        window.clickPOI.lon,
                        window.clickPOI.lat,
                        flyHeight
                    ),
                    duration: 1.0,
                });
                if (nPickFeature.id.length > 0) {
                    return;
                }
                // é‡ç½®å›¾æ ‡
                if (window.pickFeature && window.pickFeature.primitive) {
                    window.pickFeature.primitive.image = imgUrl;
                    window.pickFeature.primitive.scale = scale;
                    window.pickFeature = null;
                }
                // å¤‡ä»½æ‹¾å–的对象
                window.pickFeature = nPickFeature;
                imgUrl = nPickFeature.primitive.image;
                scale = nPickFeature.primitive.scale;
                nPickFeature.primitive.scale = 1;
                nPickFeature.primitive.image =
                    window.SmartEarthRootUrl + "Workers/image/point.png";
                //点击弹框(部件、企业、监控)
                if (nPickFeature.id.tag || nPickFeature.id.show) {
                    let properties = nPickFeature.id.properties;
                    let propertyNames = nPickFeature.id.properties.propertyNames;
                    if (propertyNames.indexOf("监控名") !== -1) {
                        // objdata = {
                        //     POITYPE: "SPJK",
                        //     name: properties["JK名称"]._value,
                        //     type: properties["JK类型"]._value,
                        //     function: properties["功能"]._value,
                        //     area: properties["所在区"]._value,
                        //     number: properties["JK编号"]._value,
                        //     code: properties["JK内码"]._value,
                        //     lon: lon,
                        //     lat: lat,
                        // }
                        Message({
                            message: '连接状态查询中',
                            type: 'info',
                            offset: 60,
                            center: true,
                            duration: 1000,
                        });
                        layerOpen(properties["JK名称"]._value, {
                            width: "100%",
                            height: "40%",
                            // offset: [offsetTop + "px", "380px"],
                            url: "../../static/video/video.html?code=" + properties["JK内码"]._value,
                            fn: {
                                success: (layero, index) => {
                                    SmartEarthPopupData.layerContainer = layero;
                                },
                                end: () => {
                                },
                                cancel: () => {
                                    // é‡ç½®å›¾æ ‡
                                    if (window.pickFeature && window.pickFeature.primitive) {
                                        window.pickFeature.primitive.image = imgUrl;
                                        window.pickFeature.primitive.scale = scale;
                                        window.pickFeature = null;
                                    }
                                    sgworld.drawObj &&
                                        sgworld.drawObj.end &&
                                        sgworld.drawObj.end("cancel");
                                },
                            },
                        });
                        return
                    } else if (propertyNames.indexOf("部件名称") !== -1) {
                        objdata = {
                            // ç‚¹ä½ç±»åž‹ï¼ˆä¸­è‹±æ–‡é…ç½®è¡¨poiKeys.js)
                            POITYPE: "CSBJ",
                            // å±•示字段
                            name: properties["部件名称"]._value,
                            address: properties["安装地址"]._value,
                            code: properties["部件编码"]._value,
                            type: properties["部件类型"]._value,
                            // å¼¹æ¡†ç»çº¬åº¦
                            lon: lon,
                            lat: lat,
                        }
                    } else if (propertyNames.indexOf("井编号") !== -1) {
                        objdata = {
                            POITYPE: "YINJ",
                            name: properties["井名称"]._value,
                            depth: properties["井深"]._value,
                            type: properties["井类型"]._value,
                            location: properties["位置"]._value,
                            code: properties["井编号"]._value,
                            lon: lon,
                            lat: lat,
                        }
                    } else if (propertyNames.indexOf("QYMC") !== -1) {
                        objdata = {
                            POITYPE: "QY",
                            QYMC: properties["QYMC"]._value,
                            XYDM: properties["XYDM"]._value,
                            BZDZ: properties["BZDZ"]._value,
                            DZ: properties["DZ"]._value,
                            lon: lon,
                            lat: lat,
                        }
                    } else if (propertyNames.includes("id")) {
                        objdata = {
                            POITYPE: "POINT",
                            name: properties["_name"]._value,
                            address: properties["_address"]._value,
                            lat: properties["_lat"]._value,
                            lon: properties["_lng"]._value,
                        }
                    }
                    divPoint3 && divPoint3.deleteObject();
                    store.setPoplayerShowAction(false);
                    store.setPoplayerListAction({});
                    store.setPoplayerShowAction(true);
                    // let arr = nPickFeature.id.name.split('&');
                    // console.log(arr);
                    // let objdata = {
                    //     POITYPE: "QY",
                    //     QYMC: arr[2],
                    //     DZ: arr[3],
                    //     BZDZ: arr[4],
                    //     XYDM: arr[5],
                    //     lon: arr[6],
                    //     lat: arr[7],
                    // }
                    store.setPoplayerListAction(objdata);
                    if (window.instance) {
                        window.instance.$destroy();
                    }
                    window.instance = new PoiLayerConstructor({
                        data: {
                            list: objdata
                        }
                    });
                    window.instance.$mount();
                    divPoint3 = window.sgworld.Creator.createDivPoint('', {
                        lon: objdata.lon,
                        lat: objdata.lat,
                        height: 5
                    }, {
                        type: "custom",
                        offset: ["c", 20],
                        description: window.instance.$el,
                        near: 0,
                        far: 100000
                    });
                    return;
                }
                //
            }
            // if (nPickFeature.id && nPickFeature.id.name.indexOf('YINJ') != -1) {
            //     divPoint3 && divPoint3.deleteObject();
            //     store.setPoplayerShowAction(false);
            //     store.setPoplayerListAction({});
            //     store.setPoplayerShowAction(true);
            //     let arr = nPickFeature.id.name.split('-');
            //     let objdata = {
            //         POITYPE: "YINJ",
            //         name: arr[2],
            //         depth: arr[3],
            //         type: arr[4],
            //         code: arr[5],
            //         location: arr[6],
            //         text: arr[7],
            //         areaCode: arr[8],
            //         lon: arr[9],
            //         lat: arr[10]
            //     }
            //     store.setPoplayerListAction(objdata);
            //     if (window.instance) {
            //         window.instance.$destroy();
            //     }
            //     window.instance = new PoiLayerConstructor({
            //         data: {
            //             list: objdata
            //         }
            //     });
            //     window.instance.$mount();
            //     divPoint3 = window.sgworld.Creator.createDivPoint('', {
            //         lon: objdata.lon,
            //         lat: objdata.lat,
            //         height: 5
            //     }, {
            //         type: "custom",
            //         offset: ["c", 20],
            //         description: window.instance.$el,
            //         near: 0,
            //         far: 100000
            //     });
            //     return;
            // }
            // else if (nPickFeature.id && nPickFeature.id.name.indexOf('QY') != -1) {
            //     divPoint3 && divPoint3.deleteObject();
            //     store.setPoplayerShowAction(false);
            //     store.setPoplayerListAction({});
            //     store.setPoplayerShowAction(true);
            //     let arr = nPickFeature.id.name.split('&');
            //     // console.log(arr);
            //     let objdata = {
            //         POITYPE: "QY",
            //         QYMC: arr[2],
            //         DZ: arr[3],
            //         BZDZ: arr[4],
            //         XYDM: arr[5],
            //         lon: arr[6],
            //         lat: arr[7],
            //     }
            //     store.setPoplayerListAction(objdata);
            //     if (window.instance) {
            //         window.instance.$destroy();
            //     }
            //     window.instance = new PoiLayerConstructor({
            //         data: {
            //             list: objdata
            //         }
            //     });
            //     window.instance.$mount();
            //     divPoint3 = window.sgworld.Creator.createDivPoint('', {
            //         lon: objdata.lon,
            //         lat: objdata.lat,
            //         height: 5
            //     }, {
            //         type: "custom",
            //         offset: ["c", 20],
            //         description: window.instance.$el,
            //         near: 0,
            //         far: 100000
            //     });
            //     return;
            // }
            else {
                // return;
            }
        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
    } catch (e) { }
}
//加载三维图层
export function loadLayer(treeNode) {
    console.log('loadLayer', treeNode);
    let layer;
    switch (treeNode.sourceType) {
        case "tms":
            layer = sgworld.Creator.createImageryProvider(
                treeNode.name,
                "tms",
                {
                    id: treeNode.id,
                    url: treeNode.urls,
                    fileExtension: treeNode.img || "png",
                    enablePickFeatures: false,
                    alpha: treeNode.alpha,
                },
                "0",
                undefined,
                true,
                ""
            );
            return layer;
            break;
        case "local-map":
            // æ·»åŠ æœ¬åœ°åœ°å›¾
            if (treeNode.tms) {
                layer = sgworld.Creator.createImageryProvider(
                    treeNode.name,
                    "tms",
                    {
                        id: treeNode.id,
                        url: treeNode.urls,
                        fileExtension: treeNode.img || "png",
                        enablePickFeatures: false,
                        level: treeNode.Level,
                        minimumLevel: treeNode.minimumLevel,
                        maximumLevel: treeNode.maximumLevel,
                        minificationFilter: Cesium.TextureMinificationFilter.NEAREST_MIPMAP_LINEAR,
                        magnificationFilter: Cesium.TextureMinificationFilter.NEAREST_MIPMAP_LINEAR,
                        tilingScheme:
                            treeNode.tileType === "Geo"
                                ? new Cesium.GeographicTilingScheme()
                                : new Cesium.WebMercatorTilingScheme(),
                        alpha: treeNode.alpha,
                    },
                    "0",
                    treeNode.zIndex,
                    true,
                    ""
                );
            } else {
                layer = sgworld.Creator.createUrlTemplateImageryProvider(
                    treeNode.name,
                    {
                        id: treeNode.id,
                        url: `${treeNode.urls}/${treeNode.tile || "{z}/{x}/{y}"}.${treeNode.img || "png"
                            }`,
                        enablePickFeatures: false,
                        level: treeNode.Level,
                        minimumLevel: treeNode.minimumLevel,
                        maximumLevel: treeNode.maximumLevel,
                        tilingScheme:
                            treeNode.tileType === "Geo"
                                ? new Cesium.GeographicTilingScheme()
                                : new Cesium.WebMercatorTilingScheme(),
                        alpha: treeNode.alpha,
                    },
                    "0",
                    treeNode.zIndex,
                    true,
                    ""
                );
            }
            break;
        case "kml":
            // æ·»åŠ kml数据
            layer = sgworld.Creator.addKmlLayer(
                treeNode.name,
                {
                    id: treeNode.id,
                    url: treeNode.urls,
                },
                true
            );
            break;
        case "google":
            // æ·»åŠ è°·æ­Œåœ°å›¾
            layer = sgworld.Creator.createUrlTemplateImageryProvider(
                treeNode.name,
                {
                    id: treeNode.id,
                    url: treeNode.urls,
                    enablePickFeatures: false,
                    level: treeNode.Level,
                    minimumLevel: treeNode.minimumLevel,
                    maximumLevel: treeNode.maximumLevel,
                    alpha: treeNode.alpha,
                },
                "0",
                treeNode.zIndex,
                true,
                ""
            );
            break;
        case "arcgis":
            // arcgis地图
            layer = sgworld.Creator.createArcGisImageryLayer(
                treeNode.name,
                {
                    id: treeNode.id,
                    url: treeNode.urls,
                    enablePickFeatures: false,
                    level: treeNode.Level,
                    usePreCachedTilesIfAvailable: treeNode.GCJ02 ? false : true, // æ˜¯å¦ä½¿ç”¨æœåŠ¡çš„å†…ç½®çš„åˆ‡ç‰‡æ–¹æ¡ˆï¼Œåç§»çº æ­£éœ€è¦ä½¿ç”¨å¦‚ä¸‹è‡ªå®šä¹‰çš„æ–¹æ¡ˆ
                    tilingScheme: treeNode.GCJ02
                        ? sgworld.Core.getOffsetTilingScheme()
                        : undefined, // åç§»çº æ­£
                    minimumLevel: treeNode.minimumLevel,
                    maximumLevel: treeNode.maximumLevel,
                    alpha: treeNode.alpha,
                },
                "0",
                treeNode.zIndex,
                true,
                ""
            );
            return layer;
            break;
        case "mapbox":
            // mapbox地图
            layer = sgworld.Creator.createImageryProvider(
                treeNode.name,
                "MapBox",
                {
                    id: treeNode.id,
                    name: treeNode.name,
                    level: treeNode.Level,
                    enablePickFeatures: false,
                    mapId: treeNode.mapId,
                    minimumLevel: treeNode.minimumLevel,
                    maximumLevel: treeNode.maximumLevel,
                    alpha: treeNode.alpha,
                    accessToken:
                        treeNode.token ||
                        "pk.eyJ1IjoibWFyc2dpcyIsImEiOiJja2Fod2xlanIwNjJzMnhvMXBkMnNqcjVpIn0.WnxikCaN2KV_zn9tLZO77A",
                },
                "0",
                treeNode.zIndex,
                true,
                ""
            );
            break;
        case "tdmap":
            // å¤©åœ°å›¾
            layer = sgworld.Creator.createWebMapTileServerImageLayer(
                treeNode.name,
                {
                    id: treeNode.id,
                    url: treeNode.urls,
                    level: treeNode.Level,
                    minimumLevel: treeNode.minimumLevel,
                    maximumLevel: 18,
                    style: treeNode.style,
                    layer: treeNode.layer,
                    format: treeNode.format,
                    enablePickFeatures: false,
                    tileMatrixSetID: "tiff",
                    show: true,
                    subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],
                    alpha: treeNode.alpha,
                },
                "0",
                treeNode.zIndex,
                true,
                ""
            );
            return layer;
            break;
        case "yzsate":
            layer = sgworld.Creator.createWebMapTileServerImageLayer(
                treeNode.name,
                {
                    id: treeNode.id,
                    url: treeNode.urls,
                    layer: treeNode.layer,
                    enablePickFeatures: false,
                    show: true,
                    tileMatrixSetID: treeNode.ttileMatrixSetId
                        ? treeNode.ttileMatrixSetId
                        : "Sate_2019",
                    tilingScheme: new Cesium.WebMercatorTilingScheme({
                        rectangleSouthwestInMeters: new Cesium.Cartesian2(0, -229396.5),
                        rectangleNortheastInMeters: new Cesium.Cartesian2(
                            917580,
                            688193.5
                        ),
                        //rectangleSouthwestInMeters:new Cesium.Cartesian2(0,0) ,
                        // rectangleNortheastInMeters:new Cesium.Cartesian2(20037508.3427892, 20037508.3427892),
                        numberOfLevelZeroTilesX: 4,
                        numberOfLevelZeroTilesY: 4,
                        projection: new Cesium.GeographicProjection(),
                    }),
                },
                pID,
                undefined,
                treeNode.checked,
                ""
            );
            treeNode.id = layer.treeobj.id;
            break;
        case "yzmap":
            layer = sgworld.Creator.createWebMapTileServerImageLayer(
                treeNode.name,
                {
                    id: treeNode.id,
                    url: treeNode.urls,
                    layer: treeNode.layer,
                    enablePickFeatures: false,
                    show: true,
                },
                pID,
                undefined,
                treeNode.checked,
                ""
            );
            treeNode.id = layer.treeobj.id;
            break;
        case "yztile":
            layer = new YZWMS(treeNode);
            sgworld._Viewer.imageryLayers.addImageryProvider(layer);
            break;
        case "tdt_label":
            // å¤©åœ°å›¾ä¸‰ç»´æ³¨è®°
            layer = sgworld.Creator.GeoWTFS({
                token: treeNode.token || "c53eb074c3fcba5ac86103d4d711bbe8",
                url: treeNode.urls,
                subdomains: ["0", "1", "2", "3", "4", "5", "6", "7"],
            });
            break;
        case "txmap":
            // è…¾è®¯åœ°å›¾
            layer = sgworld.Creator.createUrlTemplateImageryProvider(
                treeNode.name,
                {
                    id: treeNode.id,
                    url: treeNode.urls,
                    level: treeNode.Level,
                    enablePickFeatures: false,
                    minimumLevel: treeNode.minimumLevel,
                    maximumLevel: 18,
                    alpha: treeNode.alpha,
                    tilingScheme: sgworld.Core.getOffsetTilingScheme(), // åç§»çº æ­£
                    customTags: {
                        sx: (_imageryProvider, x) => {
                            return x >> 4;
                        },
                        sy: (_imageryProvider, _x, y, level) => {
                            return ((1 << level) - y) >> 4;
                        },
                    },
                },
                "0",
                treeNode.zIndex,
                true,
                ""
            );
            return layer;
            break;
        case "gdmap":
            // é«˜å¾·åœ°å›¾
            layer = sgworld.Creator.createUrlTemplateImageryProvider(
                treeNode.name,
                {
                    id: treeNode.id,
                    url: treeNode.urls,
                    enablePickFeatures: false,
                    level: treeNode.Level,
                    minimumLevel: treeNode.minimumLevel,
                    maximumLevel: 18,
                    tilingScheme: sgworld.Core.getOffsetTilingScheme(), // åç§»çº æ­£
                    alpha: treeNode.alpha,
                },
                "0",
                treeNode.zIndex,
                true,
                ""
            );
            return layer;
            break;
        case "bdmap":
            // ç™¾åº¦åœ°å›¾
            layer = sgworld.Creator.createImageryProvider(
                treeNode.name,
                "BaiduMap",
                {
                    id: treeNode.id,
                    level: treeNode.Level,
                    enablePickFeatures: false,
                    style: treeNode.style,
                    minimumLevel: treeNode.minimumLevel,
                    maximumLevel: treeNode.maximumLevel,
                    alpha: treeNode.alpha,
                },
                "0",
                treeNode.zIndex,
                true,
                ""
            );
            break;
        case "cesiumblack":
            // cesiumIon黑夜地图
            layer = sgworld.Creator.createImageryProvider(
                treeNode.name,
                "cesiumBlack",
                {
                    id: treeNode.id,
                    url: treeNode.urls,
                    flipXY: true,
                    enablePickFeatures: false,
                    level: treeNode.Level,
                    minimumLevel: treeNode.minimumLevel,
                    maximumLevel: treeNode.maximumLevel,
                    alpha: treeNode.alpha,
                },
                "0",
                treeNode.zIndex,
                true,
                ""
            );
            break;
        case "osm":
            // osm地图
            layer = sgworld.Creator.createImageryProvider(
                treeNode.name,
                "OpenStreetMap",
                {
                    id: treeNode.id,
                    url: treeNode.urls,
                    enablePickFeatures: false,
                    level: treeNode.Level,
                    minimumLevel: treeNode.minimumLevel,
                    maximumLevel: treeNode.maximumLevel,
                    alpha: treeNode.alpha,
                },
                "0",
                treeNode.zIndex,
                true,
                ""
            );
            break;
        case "wmts":
            // wmts影像
            layer = sgworld.Creator.createWebMapTileServerImageLayer(
                treeNode.name,
                {
                    id: treeNode.id,
                    url: treeNode.urls,
                    level: treeNode.Level,
                    style: treeNode.style,
                    layer: treeNode.layer,
                    enablePickFeatures: false,
                    format: treeNode.format,
                    tileMatrixSetID: treeNode.srs,
                    tilingScheme:
                        treeNode.tileType === "Geo"
                            ? new Cesium.GeographicTilingScheme()
                            : new Cesium.WebMercatorTilingScheme(),
                    show: true,
                    minimumLevel: treeNode.minimumLevel,
                    maximumLevel: treeNode.maximumLevel,
                    alpha: treeNode.alpha,
                },
                "0",
                treeNode.zIndex,
                true,
                ""
            );
            return layer;
            break;
        case "gis_wmts":
            // gisserver wmst影像
            layer = sgworld.Creator.createUrlTemplateImageryProvider(
                treeNode.name,
                {
                    id: treeNode.id,
                    url: Cesium.buildModuleUrl(
                        treeNode.urls + "/{z}/{x}/{reverseY}.png"
                    ),
                    enablePickFeatures: false,
                    level: treeNode.Level,
                    minimumLevel: treeNode.minimumLevel,
                    maximumLevel: treeNode.maximumLevel,
                    alpha: treeNode.alpha,
                },
                "0",
                treeNode.zIndex,
                true,
                ""
            );
            break;
        case "wmts_zj":
            // è¡Œåˆ—号差两倍的wmts
            var geotil = new Cesium.GeographicTilingScheme({
                rectangle: Cesium.Rectangle.MAX_VALUE,
            });
            if (treeNode.addLevel && treeNode.addLevel === 2) {
                geotil.positionToTileXY = function (position, level, result) {
                    level > 0 && level++;
                    var rectangle = this._rectangle;
                    if (!Cesium.Rectangle.contains(rectangle, position)) {
                        // outside the bounds of the tiling scheme
                        return undefined;
                    }
                    var xTiles = this.getNumberOfXTilesAtLevel(level);
                    var yTiles = this.getNumberOfYTilesAtLevel(level);
                    var xTileWidth = rectangle.width / xTiles;
                    var yTileHeight = rectangle.height / yTiles;
                    var longitude = position.longitude;
                    if (rectangle.east < rectangle.west) {
                        longitude += Cesium.Math.TWO_PI;
                    }
                    var xTileCoordinate =
                        ((longitude - rectangle.west) / xTileWidth) | 0;
                    if (xTileCoordinate >= xTiles) {
                        xTileCoordinate = xTiles - 1;
                    }
                    var yTileCoordinate =
                        ((rectangle.north - position.latitude) / yTileHeight) | 0;
                    if (yTileCoordinate >= yTiles) {
                        yTileCoordinate = yTiles - 1;
                    }
                    if (!Cesium.defined(result)) {
                        return new Cesium.Cartesian2(xTileCoordinate, yTileCoordinate);
                    }
                    result.x = xTileCoordinate;
                    result.y = yTileCoordinate;
                    return result;
                };
                geotil.tileXYToRectangle = function (x, y, level, result) {
                    level > 0 && level++;
                    var rectangle = this._rectangle;
                    var xTiles = this.getNumberOfXTilesAtLevel(level);
                    var yTiles = this.getNumberOfYTilesAtLevel(level);
                    var xTileWidth = rectangle.width / xTiles;
                    var west = x * xTileWidth + rectangle.west;
                    var east = (x + 1) * xTileWidth + rectangle.west;
                    var yTileHeight = rectangle.height / yTiles;
                    var north = rectangle.north - y * yTileHeight;
                    var south = rectangle.north - (y + 1) * yTileHeight;
                    if (!Cesium.defined(result)) {
                        result = new Cesium.Rectangle(west, south, east, north);
                    }
                    result.west = west;
                    result.south = south;
                    result.east = east;
                    result.north = north;
                    return result;
                };
            }
            layer = sgworld.Creator.createWebMapTileServerImageLayer(
                treeNode.name,
                {
                    id: treeNode.id,
                    url: treeNode.urls,
                    layer: treeNode.layer,
                    level: treeNode.Level,
                    minimumLevel: treeNode.minimumLevel,
                    maximumLevel: treeNode.maximumLevel,
                    style: "default",
                    tileMatrixSetID: "esritilematirx",
                    format: "image/png",
                    tilingScheme: geotil,
                    addLevel: treeNode.addLevel || 1, //层级加一
                    enablePickFeatures: false,
                    show: true,
                    alpha: treeNode.alpha,
                },
                "0",
                treeNode.zIndex,
                true,
                ""
            );
            break;
        case "wms":
        case "wmsc":
            // wms数据
            var parameters = {
                service: "WMS",
                format: "image/png",
                transparent: true,
            };
            if (treeNode.removeNullValue) {
                if (treeNode.nullvalue) {
                    treeNode.nullvalue = treeNode.nullvalue.replace("rgb(", "");
                    treeNode.nullvalue = treeNode.nullvalue.replace(")", "");
                }
                parameters.nullvalue = sgworld.Core.defaultValue(
                    treeNode.nullvalue,
                    "0,0,0"
                );
                parameters.nulltolerance = sgworld.Core.defaultValue(
                    treeNode.nulltolerance,
                    0
                );
            }
            treeNode.token && (treeNode.urls += "?token=" + treeNode.token);
            if (treeNode.sourceType === "wmsc") {
                layer = sgworld.Creator.createCacheImageryProvider(
                    treeNode.name,
                    {
                        id: treeNode.id,
                        url: treeNode.urls || "",
                        layers: treeNode.layer || "",
                        level: treeNode.Level,
                        enablePickFeatures: false,
                        cacheUrl: treeNode.cacheUrl || treeNode.urls,
                        fileExtension: treeNode.fileExtension,
                        cacheMaxLevel: treeNode.cacheMaxLevel || 16,
                        alpha: treeNode.alpha,
                    },
                    "0",
                    treeNode.zIndex,
                    treeNode.checked,
                    ""
                );
            } else {
                layer = sgworld.Creator.createImageryProvider(
                    treeNode.name,
                    "wms",
                    {
                        id: treeNode.id,
                        url: treeNode.urls,
                        layers: treeNode.layer || "",
                        level: treeNode.Level,
                        minimumLevel: treeNode.minimumLevel,
                        maximumLevel: treeNode.maximumLevel,
                        enablePickFeatures: false,
                        parameters: parameters,
                        alpha: treeNode.alpha,
                    },
                    "0",
                    treeNode.zIndex,
                    true,
                    ""
                );
            }
            break;
        case "wmse":
            layer = sgworld.Creator.createImageryProvider(
                treeNode.name,
                "wms",
                {
                    id: treeNode.id,
                    url: treeNode.urls,
                    level: treeNode.Level,
                    minimumLevel: treeNode.minimumLevel,
                    maximumLevel: treeNode.maximumLevel,
                    enablePickFeatures: false,
                    layers: treeNode.layer || "",
                    alpha: treeNode.alpha,
                    parameters: {
                        format: "image/png",
                        transparent: true,
                    },
                },
                "0",
                undefined,
                true,
                ""
            );
            break;
        case "wfs":
            // wfs数据
            layer = sgwfs.CreateWfs(treeNode.class, treeNode);
            break;
        case "geojson":
            if (treeNode.class === "point") {
                treeNode.disableDepthTestDistance === "Infinity" &&
                    (treeNode.disableDepthTestDistance = Number.POSITIVE_INFINITY);
                de = {
                    id: treeNode.id,
                    fillColor: sgworld.Core.defaultValue(treeNode.color, "#ffffff"),
                    color: sgworld.Core.defaultValue(treeNode.imageColor, undefined),
                    outlineColor: sgworld.Core.defaultValue(
                        treeNode.outlineColor,
                        "#ffffff"
                    ),
                    backgroundColor: sgworld.Core.defaultValue(
                        treeNode.backgroundColor,
                        "#ffffff"
                    ),
                    heightReference: sgworld.Core.defaultValue(
                        treeNode.heightReference,
                        0
                    ),
                    pointHeight: sgworld.Core.defaultValue(
                        treeNode.pointHeight,
                        undefined
                    ),
                    near: sgworld.Core.defaultValue(treeNode.near, 0),
                    far: sgworld.Core.defaultValue(treeNode.far, 99999999999),
                    bold: treeNode.bold,
                    italic: treeNode.italic,
                    showBackground: treeNode.showBackground,
                    outlineWidth: sgworld.Core.defaultValue(treeNode.outlineWidth, 1),
                    text: treeNode.text,
                    image: treeNode.image,
                    font_size: treeNode.size,
                    font_family: sgworld.Core.defaultValue(
                        treeNode.font_family,
                        "微软雅黑"
                    ),
                    disableDepthTestDistance: sgworld.Core.defaultValue(
                        treeNode.disableDepthTestDistance,
                        undefined
                    ),
                    labelData: treeNode.labelData,
                    imageData: treeNode.imageData,
                };
                if (
                    treeNode.text &&
                    treeNode.image &&
                    !treeNode.labelData &&
                    !treeNode.imageData
                ) {
                    de.labelData = {
                        horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
                        pixelOffset: new Cesium.Cartesian2(20, 0),
                    };
                    de.imageData = {
                        horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
                        pixelOffset: new Cesium.Cartesian2(0, 0),
                    };
                }
                layer = sgworld.Creator.createLabelPointGeoJsonFeatureLayer(
                    treeNode.name,
                    treeNode.urls,
                    de,
                    "0",
                    treeNode.checked
                );
            } else if (treeNode.class === "polyline") {
                de = {
                    id: treeNode.id,
                    layertype: "polylinelayer",
                    material: sgworld.Core.defaultValue(treeNode.color, "#ffffff"),
                    outlineColor: sgworld.Core.defaultValue(
                        treeNode.outlineColor,
                        "#ffffff"
                    ),
                    outlineWidth: sgworld.Core.defaultValue(treeNode.outlineWidth, 0),
                    height: sgworld.Core.defaultValue(treeNode.height, undefined),
                    width: sgworld.Core.defaultValue(treeNode.width, 2),
                    clampToGround: sgworld.Core.defaultValue(
                        treeNode.clampToGround,
                        true
                    ),
                    classificationType: treeNode.classificationType,
                    dash: sgworld.Core.defaultValue(treeNode.dash, false),
                    dashLength: sgworld.Core.defaultValue(treeNode.dashLength, 20),
                    gapColor: sgworld.Core.defaultValue(
                        treeNode.gapColor,
                        "rgba(0,0,0,0)"
                    ),
                    near: sgworld.Core.defaultValue(treeNode.near, 0),
                    far: sgworld.Core.defaultValue(treeNode.far, Infinity),
                };
                layer = sgworld.Creator.createPolylineGeoJsonFeatureLayer(
                    treeNode.name,
                    treeNode.urls,
                    de,
                    "0",
                    treeNode.checked
                );
            } else if (treeNode.class === "polylineVolume") {
                de = {
                    id: treeNode.id,
                    material: sgworld.Core.defaultValue(treeNode.color, "#ff0000"),
                    slttype: "0",
                    number: "4",
                    exradius: "1",
                    inradius: "1",
                    orth_width: "2",
                    orth_height: "2",
                    radius: sgworld.Core.defaultValue(treeNode.radius, 5),
                    cornerType: "0",
                    heightReference: "0",
                    height: sgworld.Core.defaultValue(treeNode.lineHeight, 0),
                    near: "0",
                    far: "99999999999",
                    radiusScale: treeNode.radiusScale,
                    connect: true,
                };
                layer = sgworld.Creator.createpolylineVolumeGeojsonPrimitiveLayer(
                    treeNode.name,
                    treeNode.urls,
                    de,
                    "0",
                    true,
                    function (data) {
                        if (treeNode.flow) {
                            let lines = data.entities.values;
                            lines.forEach((line) => {
                                line.polylineVolume.material =
                                    sgworld.Core.getTrailLinkMaterial(
                                        sgworld.Core.defaultValue(treeNode.color, "#ff0000"),
                                        "../static/images/smoke.png",
                                        9000
                                    );
                            });
                        }
                    }
                );
            } else if (treeNode.class === "model") {
                de = {
                    id: treeNode.id,
                    collect: 0,
                    uri: sgworld.Core.defaultValue(treeNode.model, ""),
                    file: "",
                    color: sgworld.Core.defaultValue(treeNode.color, "#ffffff"),
                    scale: sgworld.Core.defaultValue(treeNode.scale, 1),
                    heightReference: 0,
                    height: sgworld.Core.defaultValue(treeNode.height, 0),
                    near: "0",
                    far: "99999999999",
                };
                layer = sgworld.Creator.createModelPointGeoJsonFeatureLayer(
                    treeNode.name,
                    treeNode.urls,
                    de,
                    "0",
                    true
                );
            } else if (treeNode.class === "polygon") {
                treeNode.disableDepthTestDistance === "Infinity" &&
                    (treeNode.disableDepthTestDistance = Number.POSITIVE_INFINITY);
                de = {
                    id: treeNode.id,
                    material: sgworld.Core.defaultValue(treeNode.color, "#ff0000"),
                    height: sgworld.Core.defaultValue(treeNode.height, 0),
                    outlineColor: sgworld.Core.defaultValue(
                        treeNode.outlineColor,
                        "#ff0000"
                    ),
                    extrudedHeight: sgworld.Core.defaultValue(
                        treeNode.extrudedHeight,
                        0
                    ),
                    outlineWidth: sgworld.Core.defaultValue(treeNode.outlineWidth, 0),
                    outline: sgworld.Core.defaultValue(treeNode.outline, true),
                    clampToGround: sgworld.Core.defaultValue(
                        treeNode.clampToGround,
                        treeNode.extrudedHeight === undefined &&
                        treeNode.height === undefined
                    ),
                    classificationType: treeNode.classificationType,
                    near: sgworld.Core.defaultValue(treeNode.near, 0),
                    far: sgworld.Core.defaultValue(treeNode.far, Infinity),
                    text: treeNode.text,
                    font: sgworld.Core.defaultValue(treeNode.font, "微软雅黑"),
                    labelNear: treeNode.labelNear,
                    labelFar: treeNode.labelFar,
                    fontSize: sgworld.Core.defaultValue(treeNode.size, "18px"),
                    italic: treeNode.italic,
                    bold: treeNode.bold,
                    pixelOffset: new Cesium.Cartesian2(
                        sgworld.Core.defaultValue(treeNode.offsetX, 0),
                        sgworld.Core.defaultValue(treeNode.offsetY, 0)
                    ),
                    labelOutlineWidth: 2,
                    disableDepthTestDistance: treeNode.disableDepthTestDistance,
                    water: treeNode.water,
                };
                layer = sgworld.Creator.createPolygonGeoJsonFeatureLayer(
                    treeNode.name,
                    treeNode.urls,
                    de,
                    "0",
                    treeNode.checked
                );
            }
            break;
        case "pathLayer":
            layer = sgworld.Creator.createPathLayer({
                id: treeNode.id,
                url: treeNode.url,
                color: treeNode.color || "#0033FF", //线的颜色
                width: treeNode.width || 4.0, //线的宽度
                pointColor: treeNode.pointColor || "#FFFFFF", //移动点的颜色
                speed: treeNode.speed || 5,
                far: treeNode.far || 5000,
            });
            break;
        case "vector": {
            let urls = {
                url: treeNode.urls,
                layer: treeNode.layer,
                srs: treeNode.srs,
            };
            if (
                treeNode.class === "point" ||
                treeNode.class === "label" ||
                treeNode.class === "image"
            ) {
                treeNode.disableDepthTestDistance === "Infinity" &&
                    (treeNode.disableDepthTestDistance = Number.POSITIVE_INFINITY);
                if (treeNode.style) {
                    // de = getVectorStyleFromSG(treeNode, treeNode.style);
                } else {
                    de = {
                        id: treeNode.id,
                        level_min: sgworld.Core.defaultValue(treeNode.minimumLevel, 10),
                        level_max: sgworld.Core.defaultValue(treeNode.maximumLevel, 22),
                        fillColor: sgworld.Core.defaultValue(treeNode.color, "#ffffff"),
                        color: sgworld.Core.defaultValue(
                            treeNode.imageColor,
                            undefined
                        ),
                        outlineColor: sgworld.Core.defaultValue(
                            treeNode.outlineColor,
                            "#ffffff"
                        ),
                        backgroundColor: sgworld.Core.defaultValue(
                            treeNode.backgroundColor,
                            "#ffffff"
                        ),
                        heightReference: sgworld.Core.defaultValue(
                            treeNode.heightReference,
                            0
                        ),
                        pointHeight: sgworld.Core.defaultValue(
                            treeNode.pointHeight,
                            undefined
                        ),
                        near: sgworld.Core.defaultValue(treeNode.near, 0),
                        far: sgworld.Core.defaultValue(treeNode.far, 99999999999),
                        bold: treeNode.bold,
                        italic: treeNode.italic,
                        showBackground: treeNode.showBackground,
                        outlineWidth: sgworld.Core.defaultValue(
                            treeNode.outlineWidth,
                            1
                        ),
                        text: treeNode.text,
                        image: treeNode.image,
                        font_size: treeNode.size,
                        font_family: sgworld.Core.defaultValue(
                            treeNode.font_family,
                            "微软雅黑"
                        ),
                        disableDepthTestDistance: sgworld.Core.defaultValue(
                            treeNode.disableDepthTestDistance,
                            undefined
                        ),
                        labelData: treeNode.labelData,
                        imageData: treeNode.imageData,
                    };
                }
                if (
                    treeNode.text &&
                    treeNode.image &&
                    !treeNode.labelData &&
                    !treeNode.imageData
                ) {
                    de.labelData = {
                        horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
                        pixelOffset: new Cesium.Cartesian2(20, 0),
                    };
                    de.imageData = {
                        horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
                        pixelOffset: new Cesium.Cartesian2(0, 0),
                    };
                }
                urls.upperLevelLimit = de.level_max;
                urls.lowerLevelLimit = de.level_min;
                layer = sgworld.Creator.createLabelImageGeoJsonFeatureLayerProvider(
                    treeNode.name,
                    urls,
                    de,
                    "0",
                    treeNode.checked,
                    function () { }
                );
            } else if (treeNode.class === "polylineVolume") {
                de = {
                    id: treeNode.id,
                    level_min: sgworld.Core.defaultValue(treeNode.minimumLevel, 10),
                    level_max: sgworld.Core.defaultValue(treeNode.maximumLevel, 22),
                    material: sgworld.Core.defaultValue(treeNode.color, "#ff0000"),
                    slttype: "0",
                    number: "4",
                    exradius: "1",
                    inradius: "1",
                    orth_width: "2",
                    orth_height: "2",
                    radius: sgworld.Core.defaultValue(treeNode.radius, 0.5),
                    cornerType: "0",
                    heightReference: "0",
                    height: sgworld.Core.defaultValue(treeNode.height, 0),
                    near: sgworld.Core.defaultValue(treeNode.near, 0),
                    far: sgworld.Core.defaultValue(treeNode.far, 99999999999),
                    radiusScale: treeNode.radiusScale,
                };
                urls.upperLevelLimit = de.level_max;
                urls.lowerLevelLimit = de.level_min;
                layer = sgworld.Creator.createVolumeGeoJsonFeatureLayerProvider(
                    treeNode.name,
                    urls,
                    de,
                    "0",
                    treeNode.checked,
                    function () { }
                );
            } else if (treeNode.class === "polyline") {
                de = {
                    id: treeNode.id,
                    layertype: "polylinelayer",
                    level_min: sgworld.Core.defaultValue(treeNode.minimumLevel, 10),
                    level_max: sgworld.Core.defaultValue(treeNode.maximumLevel, 22),
                    material: sgworld.Core.defaultValue(treeNode.color, "#ffffff"),
                    outlineColor: sgworld.Core.defaultValue(
                        treeNode.outlineColor,
                        "#ffffff"
                    ),
                    outlineWidth: sgworld.Core.defaultValue(treeNode.outlineWidth, 0),
                    height: sgworld.Core.defaultValue(treeNode.height, undefined),
                    width: sgworld.Core.defaultValue(treeNode.width, 2),
                    clampToGround: sgworld.Core.defaultValue(
                        treeNode.clampToGround,
                        true
                    ),
                    classificationType: treeNode.classificationType,
                    dash: sgworld.Core.defaultValue(treeNode.dash, false),
                    dashLength: sgworld.Core.defaultValue(treeNode.dashLength, 20),
                    gapColor: sgworld.Core.defaultValue(
                        treeNode.gapColor,
                        "rgba(0,0,0,0)"
                    ),
                    near: sgworld.Core.defaultValue(treeNode.near, 0),
                    far: sgworld.Core.defaultValue(treeNode.far, Infinity),
                };
                urls.upperLevelLimit = de.level_max;
                urls.lowerLevelLimit = de.level_min;
                layer =
                    sgworld.Creator.createPrimitivePolylineVectorGeoJsonFeatureLayerProvider(
                        treeNode.name,
                        urls,
                        de,
                        "0",
                        treeNode.checked,
                        function () { }
                    );
            } else if (treeNode.class === "polygon") {
                de = {
                    id: treeNode.id,
                    layertype: "polygonlayer",
                    level_min: sgworld.Core.defaultValue(treeNode.minimumLevel, 10),
                    level_max: sgworld.Core.defaultValue(treeNode.maximumLevel, 22),
                    material: sgworld.Core.defaultValue(treeNode.color, "#ff0000"),
                    heightReference: "1",
                    height: sgworld.Core.defaultValue(treeNode.height, 0),
                    extrudedHeight: sgworld.Core.defaultValue(
                        treeNode.extrudedHeight,
                        0
                    ),
                    extrudedHeightReference: "1",
                    clampToGround: sgworld.Core.defaultValue(
                        treeNode.clampToGround,
                        false
                    ),
                    classificationType: treeNode.classificationType,
                    near: sgworld.Core.defaultValue(treeNode.near, 0),
                    far: sgworld.Core.defaultValue(treeNode.far, Infinity),
                };
                urls.upperLevelLimit = de.level_max;
                urls.lowerLevelLimit = de.level_min;
                layer =
                    sgworld.Creator.createGeoJsonFeatureLayerProviderOptimization(
                        treeNode.name,
                        urls,
                        de,
                        "0",
                        treeNode.checked,
                        function () { }
                    );
            } else if (treeNode.class === "model") {
                de = {
                    id: treeNode.id,
                    level_min: sgworld.Core.defaultValue(treeNode.minimumLevel, 10),
                    level_max: sgworld.Core.defaultValue(treeNode.maximumLevel, 22),
                    collect: 0,
                    uri: sgworld.Core.defaultValue(treeNode.model, ""),
                    file: "",
                    color: sgworld.Core.defaultValue(treeNode.color, "#ffffff"),
                    scale: sgworld.Core.defaultValue(treeNode.scale, 1),
                    heightReference: 0,
                    height: sgworld.Core.defaultValue(treeNode.height, 0),
                    near: "0",
                    far: "99999999999",
                };
                //模型点
                urls.upperLevelLimit = de.level_max;
                urls.lowerLevelLimit = de.level_min;
                layer = sgworld.Creator.createModelGeoJsonFeatureLayerProvider(
                    treeNode.name,
                    urls,
                    de,
                    "0",
                    treeNode.checked,
                    function () { }
                );
            }
            layer && (treeNode.id = layer.treeobj.id);
            break;
        }
        case "terrain":
            layer = sgworld.Creator.createTerrain(
                treeNode.name,
                {
                    id: treeNode.id,
                    requestVertexNormals: true,
                    url: treeNode.urls,
                },
                "0",
                true,
                ""
            );
            break;
        case "sgsterrain":
            layer = sgworld.Creator.sfsterrainprovider(
                treeNode.name,
                {
                    id: treeNode.id,
                    layerName: treeNode.layer,
                    requestVertexNormals: true,
                    url: treeNode.urls || "",
                    token: treeNode.token,
                    cacheUrl: treeNode.cacheUrl,
                    cacheLevel: treeNode.cacheLevel,
                },
                "0",
                true,
                ""
            );
            break;
        case "sgsterrain7.1":
            layer = sgworld.Creator.sfsterrainprovider71(
                treeNode.name,
                {
                    id: treeNode.id,
                    layerName: treeNode.layer,
                    requestVertexNormals: true,
                    url: treeNode.urls,
                    token: treeNode.token,
                    cacheUrl: treeNode.cacheUrl,
                    cacheLevel: treeNode.cacheLevel,
                },
                "0",
                true,
                ""
            );
            break;
        case "arcgisterrain":
            layer = sgworld.Creator.createArcGISTerrain(
                treeNode.name,
                {
                    id: treeNode.id,
                    requestVertexNormals: true,
                    url: treeNode.urls,
                },
                "0",
                true,
                ""
            );
            break;
        case "CesiumGlobeTerrain":
            layer = sgworld.Creator.createCesiumTerrain(
                treeNode.name,
                {
                    id: treeNode.id,
                    requestVertexNormals: true,
                },
                "0",
                true,
                ""
            );
            break;
        case "b3dm":
            layer = sgworld.Creator.create3DTilesets(
                treeNode.name,
                treeNode.urls,
                {
                    id: treeNode.id,
                    Level: treeNode.Level,
                    maximumScreenSpaceError:
                        treeNode.maximumScreenSpaceError &&
                        parseInt(treeNode.maximumScreenSpaceError),
                    maximumMemoryUsage:
                        treeNode.maximumMemoryUsage &&
                        parseInt(treeNode.maximumMemoryUsage),
                    geometricError:
                        treeNode.geometricError && parseInt(treeNode.geometricError),
                },
                {
                    groundCenter: treeNode.Center,
                    groundheight: treeNode.modelHeight,
                    heading: treeNode.heading,
                    pitch: treeNode.pitch,
                    roll: treeNode.roll,
                    effects: treeNode.effects || false,
                    effectsMaxHeight: treeNode.effectsMaxHeight || 150,
                    colors: treeNode.alpha
                        ? "rgba(255,255,255," + treeNode.alpha + ")"
                        : treeNode.color || undefined,
                },
                "0",
                true
            );
            return layer;
            break;
        case "s3m":
            layer = sgworld.Creator.createS3MLayer(
                treeNode.urls,
                sgworld._Viewer.scene,
                function () { }
            );
            break;
        case "gltf":
            var position = [treeNode.lon, treeNode.lat, treeNode.height];
            layer = sgworld.Creator.createModel(
                position,
                treeNode.urls,
                {
                    id: treeNode.id,
                    scale: treeNode.scale || 1,
                    heading: treeNode.heading,
                    pitch: treeNode.pitch,
                    roll: treeNode.roll,
                },
                "0",
                treeNode.name,
                ""
            );
            break;
        case "SimpleGraphic":
            treeNode.type = treeNode.class;
            layer = sgworld.Creator.SimpleGraphic.addFeature(treeNode);
            break;
        case "videoPolygon":
            layer = sgworld.Creator.addVideoPolygon(treeNode.positions, {
                url: treeNode.url,
                angle: treeNode.angle,
            });
            break;
        case "MilitaryPlotting":
            if (!treeNode.feature.id) {
                treeNode.feature.id = treeNode.id;
            }
            if (!treeNode.feature.name) {
                treeNode.feature.name = treeNode.name;
            }
            layer = sgworld.Creator.MilitaryPlotting.addFeature(treeNode.feature);
            break;
        case "ParticleEffect":
            layer = sgworld.Analysis.createParticleEffect(
                treeNode.name,
                treeNode.position,
                {
                    translation: Cesium.Cartesian3.fromElements(0, 0, 0), //平移
                }
            );
            layer.name = treeNode.name;
            break;
        case "FlowField":
            layer = sgworld.Creator.createTrailLine(
                treeNode.positions,
                treeNode.style
            );
            layer.boundingSphere = Cesium.BoundingSphere.fromPoints(
                treeNode.positions
            );
            break;
        case "MobileWall":
            layer = sgworld.Creator.createTrailLineWall(
                treeNode.LineInterpolation.positions,
                treeNode.style
            );
            layer.boundingSphere = Cesium.BoundingSphere.fromPoints(
                treeNode.LineInterpolation.positions
            );
            break;
        case "link":
            layer = sgworld.Creator.createLinkPro(
                sgworld.Core.toDegrees(treeNode.posisitons[0]),
                sgworld.Core.toDegrees(treeNode.posisitons[1]),
                {
                    clampToGround: true,
                }
            );
            break;
        case "DiffusionSource":
            layer = sgworld.Analysis.createMultiCircleScan(
                treeNode.position,
                treeNode.maxRadius,
                treeNode.maxRadius.color,
                3000,
                true
            );
            break;
        case "RiskDiffusion":
        case "CircularDiffusion":
            layer = sgworld.Analysis.createCircleScan(
                treeNode.position,
                treeNode.maxRadius,
                treeNode.color,
                3000,
                true
            );
            break;
        case "FanDiffusion":
            layer = sgworld.Analysis.createSectorScan(
                treeNode.position,
                treeNode.distance,
                "#ff0000",
                60,
                treeNode.angle,
                true,
                4000,
                true
            );
            break;
        case "RadarMask":
            layer = sgworld.Creator.createRectangularSensor(
                treeNode.position,
                treeNode.cylinder
            );
            break;
        case "DynamicSatellite":
            let dtwxzsData = sgworld.Creator.createConeRadar(treeNode.position, {
                color: "#7b9ef7",
                radius: 200000,
            });
            let weixin = sgworld.Creator.createModel(
                treeNode.position,
                window.SmartEarthRootUrl + "Workers/Model/weixin.gltf",
                { scale: 15 },
                "0",
                "卫星"
            );
            layer = { dtwxzsData, weixin };
            layer.sourceType = "DynamicSatellite";
            break;
        case "excavate":
            var position = [treeNode.lon, treeNode.lat, treeNode.height];
            layer = sgworld.Creator.createModel(
                position,
                treeNode.urls,
                {
                    id: treeNode.id,
                    scale: treeNode.scale || 1,
                },
                pID,
                treeNode.name,
                ""
            );
            treeNode.id = layer.treeobj.id;
            break;
    }
    return layer
}
export function clearLayerByTypeId(type) {
    if (_GLOBAL.layers[type]) {
        _GLOBAL.layers[type].forEach(item => {
            item && item.deleteObject()
        });
        _GLOBAL.layers[type] = [];
    }
}
export function clearLayerByTypeIdArr(arr) {
    if (arr.length) {
        arr.forEach(item => {
            clearLayerByTypeId(item);
        })
    }
}
var pointArr = [];
//openlayer åˆ›å»ºç‚¹ä½
export function createPointMarker(position, obj) {
    let startFeature = new ol.Feature({
        geometry: new ol.geom.Point(position),
    });
    startFeature.setProperties({
        desc: obj,
    });
    if(pointArr && pointArr.length > 0){
        pointArr.forEach(item=>{
            window.map.removeLayer(item);
        })
        pointArr = []
    }
    let MarkerLayer = new ol.layer.Vector({
        id: 'LocationPoint',
        name: '标记点',
        source: new ol.source.Vector({
            features: [startFeature],
        }),
        style: new ol.style.Style({
            image: new ol.style.Icon({
                src: require('@/assets/img/collection/scdw.png'),
                anchorOrigin: "top-left",
                anchorXUnits: "fraction",
                anchorYUnits: "fraction",
                offsetOrigin: "bottom-right",
                scale: 0.6,
                opacity: 1,
            })
        }),
        zIndex: 1099,
    })
    pointArr.push(MarkerLayer)
    return MarkerLayer;
}
//openlayer åœ°å›¾ç‚¹å‡»äº‹ä»¶
export function setClick(state) {
    let container = document.getElementById('ponitPanel');
    let close = document.getElementById('ponitPanel-close');
    let content = document.getElementById('ponitPanel-content');
    let overlay = new ol.Overlay({
        element: container,
        autoPan: {
            animation: {
                duration: 250,
            },
        },
    });
    window.map.addOverlay(overlay);
    // let _clickCallback = callback;
    function handleClick(e) {
        window.map.forEachFeatureAtPixel(e.pixel, function (feature) {
            // console.log(feature, '111111')
            if (feature && feature.values_.desc) {
                ponitPanel.style.display = 'block'
                let obj = feature.values_.desc
                // content.innerHTML = `
                //        <div class="ponitPanel-item">
                //          <span>名称:</span>
                //          <span>${obj.name}</span>
                //        </div>
                //      <div class="ponitPanel-item">
                //         <span>地址:</span>
                //        <span>${obj.address}</span>
                //     </div>`
                setTimeout(() => {
                    overlay.setPosition(e.coordinate);
                }, 0)
                // close.addEventListener("click", function () {
                //     overlay.setPosition(undefined);
                // });
                // store.setPoplayerShowAction(true);
                // store.setPoplayerListAction(objdata);
                // if (window.instance) {
                //     window.instance.$destroy();
                // }
                // window.instance = new PoiLayerConstructor({
                //     data: {
                //         list: objdata
                //     }
                // });
                // window.instance.$mount();
            }
        });
    }
    if (state) {
        clickEvent = window.map.on('click', handleClick);
    } else {
        ol.Observable.unByKey(clickEvent)
        clickEvent = null
    }
}
export function flyToPoint(posisitons) {
    // let zoom = window.map.getView().getZoom();
    // if (zoom >= 16) {
    //     zoom = 12
    // }
    // let duration = 2000;
    window.map.getView().animate({
        center: posisitons,
        zoom: 12,
        duration: 1500
    })
    // window.map.getView().animate(
    //     //动画开始时
    //     {
    //         zoom: zoom > 16 ? zoom - 0.01 : zoom + 0.01,
    //         duration: duration / 2,
    //     },
    //     //动画结束时
    //     {
    //         zoom: zoom >= 16 ? 16 : zoom + 4,
    //         duration: duration / 2,
    //     }
    // );
}
src/utils/map2.js
@@ -2244,14 +2244,10 @@
        },
    });
    window.map.addOverlay(overlay);
    // let _clickCallback = callback;
    function handleClick(e) {
        window.map.forEachFeatureAtPixel(e.pixel, function (feature) {
            // console.log(feature, '111111')
            if (feature && feature.values_.desc) {
                ponitPanel.style.display = 'block'
                let obj = feature.values_.desc
                objdata = {
                    POITYPE: "POINT",
@@ -2260,24 +2256,9 @@
                    lon: obj.lng,
                    lat: obj.lat
                }
                ponitPanel.innerHTML = `
                       <div class="ponitPanel-name">
                         <span>名称:</span>
                         <span>${objdata.name}</span>
                       </div>
                     <div class="ponitPanel-value">
                        <span>地址:</span>
                       <span>${objdata.address}</span>
                    </div>`
                setTimeout(() => {
                    overlay.setPosition(e.coordinate);
                }, 0)
                // store.setPoplayerShowAction(true);
                // store.setPoplayerListAction(objdata);
                overlay.setPosition(e.coordinate);
                store.setPoplayerShowAction(true);
                store.setPoplayerListAction(objdata);
                // if (window.instance) {
                //     window.instance.$destroy();
                // }
@@ -2300,26 +2281,9 @@
export function flyToPoint(posisitons) {
    // let zoom = window.map.getView().getZoom();
    // if (zoom >= 16) {
    //     zoom = 12
    // }
    // let duration = 2000;
    window.map.getView().animate({
        center: posisitons,
        zoom: 12,
        zoom: 15,
        duration: 1500
    })
    // window.map.getView().animate(
    //     //动画开始时
    //     {
    //         zoom: zoom > 16 ? zoom - 0.01 : zoom + 0.01,
    //         duration: duration / 2,
    //     },
    //     //动画结束时
    //     {
    //         zoom: zoom >= 16 ? 16 : zoom + 4,
    //         duration: duration / 2,
    //     }
    // );
}