zhanmingkan
2022-05-16 c8a1a20ba1ca73bef0cc3bbac652014367d05d75
view/project/layerAnalysis.html
@@ -56,6 +56,11 @@
            border-radius: 6px;
            background-color: #999;
        }
        .layui-tree-btnGroup .layui-icon {
            display: inline-block;
            color: white
        }
    </style>
    <script>
@@ -64,9 +69,10 @@
        layui.use(['tree'], function () {
            var tree = layui.tree
            isloading = true;
            tree.render({
            var modelTree = tree.render({
                elem: '#model-tree-list'
                , data: layerMenu
                , edit: ["del"]
                , showCheckbox: true  //是否显示复选框
                , id: 'model-tree-list'
                , isJump: false //是否允许点击节点时弹出新窗口跳转
@@ -86,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": {
@@ -108,26 +114,84 @@
                                break;
                            }
                            case "shpFeature": {
                                let path = data.path;
                                console.log("shpFeature click");
                            }
                        }
                        if (model != undefined) {
                            viewer.flyTo(model, {
                                offset: {
                                    heading: 0,
                                    pitch: -90
                                },
                            }).then(function () {
                                // if (obj.data.field == 'Primitive') {
                                //     setTimeout(() => {
                                //         dptiles(model.root.children);
                                //     }, 5000);
                                // }
                            });
                        }
                    }
                    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) {
                        return;
                    }
                    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( Cesium.loadBlob(parent.httpConfig.nginxUrl + shpArray[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++){
                                    for (let i = 0; i < shpArray.length; i++) {
                                        files[i].name = shpArray[i];
                                    }
                                    var shpProvider = new parent.VectorTileImageryProvider({
                                        source: files,
                                        zIndex: 99,
                                        zIndex: len,
                                        removeDuplicate: false,
                                        defaultStyle: {
                                            outlineColor: "rgb(255,0,0)",
                                            fillColor: "rgba(255,0,0,0.6)",
                                            outlineColor: data.color,
                                            fillColor: data.color,
                                            lineWidth: 1,
                                            fill: false,
                                            tileCacheSize: 200,
@@ -151,7 +215,8 @@
                                        simplify: false
                                    });
                                    shpProvider.readyPromise.then(function () {
                                        layer = parent.viewer.imageryLayers.addImageryProvider(shpProvider);
                                        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;
@@ -159,34 +224,21 @@
                                    });
                                });
                        }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 (model != undefined) {
                            viewer.flyTo(model, {
                                offset: {
                                    heading: 0,
                                    pitch: -90
                                },
                            }).then(function () {
                                // if (obj.data.field == 'Primitive') {
                                //     setTimeout(() => {
                                //         dptiles(model.root.children);
                                //     }, 5000);
                                // }
                            });
                        }
                    }
                    }
                }
                , oncheck: function (obj) {
                    if (isloading) {
                        return;
                    }
                    var ischeck = obj.checked;
                    var objData = obj.data;
                    var type = objData.field;
                    if (type != 'BaseMap' && type != 'Terrain' && type != 'Plotting') {
                        //changeChecked(ischeck, parent.getNodeById(objData.id));
                        /*
@@ -256,6 +308,7 @@
                            let result = modelType == 'Primitive' ? parent.delprimitiveModel(modelId) : parent.delentityModel(modelId);
                        }
                        parent.delNodeById(modelId, layerMenu);
                        delDrawEntity(modelId);
                    }
                }
            });
@@ -312,6 +365,37 @@
                    changeParentChecked(ischeck, parentOfData);
                }
            }
            //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();
                }
            })
            function delDrawEntity(modelId) {
                let updateData = {
                    "ids": modelId,
                }
                let token = window.localStorage.getItem("token");
                $.ajax({
                    type: "post",
                    async: false,
                    url: parent.httpConfig.webApiUrl + "landstamp/front/removeDrawEntity",
                    data: updateData,
                    contentType: "application/x-www-form-urlencoded",
                    beforeSend: function (request) {
                        request.setRequestHeader("token", token);
                    },
                    success: function (data) {
                        console.log(data)
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        console.log("ajax请求失败!");
                    }
                });
            }
        });
    </script>
@@ -347,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);