ansel0926
2022-05-18 f0efddd9e32b9c5dc828401c4092be004b4826cf
view/project/layerAnalysis.html
@@ -56,9 +56,10 @@
            border-radius: 6px;
            background-color: #999;
        }
        .layui-tree-btnGroup .layui-icon{
        .layui-tree-btnGroup .layui-icon {
            display: inline-block;
            color:white
            color: white
        }
    </style>
@@ -68,10 +69,10 @@
        layui.use(['tree'], function () {
            var tree = layui.tree
            isloading = true;
            var modelTree=tree.render({
            var modelTree = tree.render({
                elem: '#model-tree-list'
                , data: layerMenu
                , edit:["del"]
                , edit: ["del"]
                , showCheckbox: true  //是否显示复选框
                , id: 'model-tree-list'
                , isJump: false //是否允许点击节点时弹出新窗口跳转
@@ -91,7 +92,7 @@
                    var data = obj.data.ext;  //获取当前点击的节点数据
                    var viewer = parent.viewer;
                    var Cesium = parent.Cesium;
                    if (type != 'BaseMap' && type != 'Terrain' && type != 'Plotting') {
                    if (type != 'BaseMap' && type != 'Terrain' && type != 'Plotting' && type != 'DDE') {
                        var model = undefined;
                        switch (obj.data.field) {
                            case "Primitive": {
@@ -113,58 +114,7 @@
                                break;
                            }
                            case "shpFeature": {
                                let path = data.path;
                                let shpArray = JSON.parse(path);
                                var shpPromises = [];
                                for (let i = 0; i < shpArray.length; i++) {
                                     shpPromises.push( Cesium.loadBlob(parent.httpConfig.nginxUrl + shpArray[i]));
                                }
                                var layer = null;
                                parent.Cesium.when.all(shpPromises, function (files) {
                                    for(let i=0;i<shpArray.length;i++){
                                        files[i].name = shpArray[i];
                                    }
                                    var shpProvider = new parent.VectorTileImageryProvider({
                                        source: files,
                                        zIndex: 99,
                                        removeDuplicate: false,
                                        defaultStyle: {
                                            outlineColor: "rgb(255,0,0)",
                                            fillColor: "rgba(255,0,0,0.6)",
                                            lineWidth: 1,
                                            fill: false,
                                            tileCacheSize: 200,
                                            showMaker: false,
                                            showCenterLabel: true,
                                            fontColor: "rgba(255,0,0,1)",
                                            labelOffsetX: -10,
                                            labelOffsetY: -5,
                                            fontSize: 13,
                                            fontFamily: "黑体",
                                            centerLabelPropertyName: "NAME",
                                            lineCap: "round",
                                            shadowColor: "black",
                                            shadowOffsetX: 1,
                                            shadowOffsetY: -1,
                                            shadowBlur: 1,
                                            lineJoin: "round"
                                        },
                                        maximumLevel: 20,
                                        minimumLevel: 1,
                                        simplify: false
                                    });
                                    shpProvider.readyPromise.then(function () {
                                        layer = parent.viewer.imageryLayers.addImageryProvider(shpProvider);
                                        parent.viewer.flyTo(layer);
                                        parent.Cesium.Camera.DEFAULT_VIEW_RECTANGLE = shpProvider.rectangle;
                                    });
                                });
                                console.log("shpFeature click");
                            }
                        }
@@ -184,6 +134,24 @@
                        }
                    }
                    else if (type == 'DDE') {
                        var lon, lat, alt;
                        lon = obj.data.lon;
                        lat = obj.data.lat;
                        alt = obj.data.altitude;
                        console.log(lon, lat, alt);
                        if (lon != undefined && lat != undefined && alt != undefined) {
                            let flyPromise = viewer.camera.flyTo({
                                duration: 3,
                                destination: Cesium.Cartesian3.fromDegrees(Number(lon), Number(lat), alt),
                                orientation: {
                                    heading: Cesium.Math.toRadians(0),                          //绕垂直于地心的轴旋转
                                    pitch: Cesium.Math.toRadians(-90),      //绕纬度线旋转
                                    roll: Cesium.Math.toRadians(0)                                 //绕经度线旋转
                                },
                            });
                        }
                    }
                }
                , oncheck: function (obj) {
                    if (isloading) {
@@ -192,6 +160,85 @@
                    var ischeck = obj.checked;
                    var objData = obj.data;
                    var type = objData.field;
                    if (type == "shpFeature") {//如果是 shp图层
                        if (ischeck) {
                            let data = obj.data.ext;
                            let path = data.path;
                            let shpArray = JSON.parse(path);
                            var shpPromises = [];
                            for (let i = 0; i < shpArray.length; i++) {
                                shpPromises.push(parent.Cesium.loadBlob(parent.httpConfig.nginxUrl + shpArray[i]));
                            }
                            //判断是否存在
                            let len = parent.viewer.imageryLayers.length;
                            if (parent.layerMap.get(obj.data.id) != null) {
                                parent.vMsg.warning("图层已经存在无需重复加载");
                                return;
                            }
                            var layer = null;
                            parent.Cesium.when.all(shpPromises, function (files) {
                                for (let i = 0; i < shpArray.length; i++) {
                                    files[i].name = shpArray[i];
                                }
                                var shpProvider = new parent.VectorTileImageryProvider({
                                    source:  files,
                                    zIndex: len,
                                    removeDuplicate: false,
                                    defaultStyle: {
                                        outlineColor: data.color,
                                        fillColor: data.color,
                                        lineWidth: 1,
                                        fill: true,
                                        tileCacheSize: 200,
                                        showMaker: true,
                                        showCenterLabel: true,
                                        fontColor: "rgba(255,0,0,1)",
                                        labelOffsetX: -10,
                                        labelOffsetY: -5,
                                        fontSize: 13,
                                        fontFamily: "黑体",
                                        centerLabelPropertyName: "NAME",
                                        lineCap: "round",
                                        shadowColor: "black",
                                        shadowOffsetX: 1,
                                        shadowOffsetY: -1,
                                        shadowBlur: 1,
                                        lineJoin: "round"
                                    },
                                    maximumLevel: 20,
                                    minimumLevel: 1,
                                    simplify: false
                                });
                                shpProvider.readyPromise.then(function () {
                                    parent.layerMap.set(obj.data.id, len);
                                    layer = parent.viewer.imageryLayers.addImageryProvider(shpProvider, len);
                                    parent.viewer.flyTo(layer);
                                    parent.Cesium.Camera.DEFAULT_VIEW_RECTANGLE = shpProvider.rectangle;
                                });
                            });
                        } else {//移除shp
                            var id = obj.data.id;
                            var index = parent.layerMap.get(id);
                            parent.viewer.imageryLayers.remove(parent.viewer.imageryLayers.get(index), true);
                            parent.layerMap.delete(id);
                            for (let key of parent.layerMap.keys()) {//数组的游标-1
                                if (parent.layerMap.get(key) > index) {
                                    parent.layerMap.set(key, parent.layerMap.get(key) - 1);
                                }
                            }
                        }
                    }
                    if (type != 'BaseMap' && type != 'Terrain' && type != 'Plotting') {
                        //changeChecked(ischeck, parent.getNodeById(objData.id));
                        /*
@@ -319,17 +366,17 @@
                }
            }
            //zzf:隐藏除绘图菜单以外的删除按钮
            $(modelTree.config.elem[0].children[0].childNodes).each(function(){
                let parentDiv=$(this)[0].childNodes[0];
                $(parentDiv).find("div .layui-icon-delete").remove();
                if($(this)[0].dataset.id!="4"){
                    let childrenDiv=$(this)[0].childNodes[1];
                    $(childrenDiv).find("div .layui-icon-delete").remove();
            $(modelTree.config.elem[0].children[0].childNodes).each(function () {
                let parentDiv = $(this)[0].childNodes[0];
                $(parentDiv).find("div .layui-icon-delete").remove();
                if ($(this)[0].dataset.id != "4") {
                    let childrenDiv = $(this)[0].childNodes[1];
                    $(childrenDiv).find("div .layui-icon-delete").remove();
                }
            })
            function delDrawEntity(modelId){
                let updateData= {
                    "ids":modelId,
            function delDrawEntity(modelId) {
                let updateData = {
                    "ids": modelId,
                }
                let token = window.localStorage.getItem("token");
                $.ajax({
@@ -338,8 +385,8 @@
                    url: parent.httpConfig.webApiUrl + "landstamp/front/removeDrawEntity",
                    data: updateData,
                    contentType: "application/x-www-form-urlencoded",
                    beforeSend:function(request){
                        request.setRequestHeader("token",token);
                    beforeSend: function (request) {
                        request.setRequestHeader("token", token);
                    },
                    success: function (data) {
                        console.log(data)
@@ -384,7 +431,10 @@
                    request.setRequestHeader("token", token);
                },
                success: function (data) {
                    layerMenu.push(data);
                    if (parent.getRootById(data.id) == null) {
                        data.isloading = false;
                        layerMenu.push(data);
                    }
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    console.log(errorThrown);