11
lixuliang
2024-01-09 cbde2b4fb938ce62c204390544c52935906c8962
src/assets/js/Layer/model.js
@@ -1,3 +1,4 @@
import { updateUserPwd } from "../../../api/api";
import store from "../../../store";
import Bus from "@tools/Bus";
const model = {
@@ -10,11 +11,32 @@
        this.title = item;
        this.setModelMouseMove();
    },
    changeBatchLayer(item, res) {
        store.state.addModelFlag = res;
        this.title = item;
    },
    deleteAll() {
        if (!this.modelLayer) return;
        for (var i = 0; i < this.modelLayer._primitives.length; i++) {
            this.modelLayer.remove(this.modelLayer._primitives[i]);
            i--;
        }
        this.modelLayer = null;
    },
    setModelCoord(res) {
        store.state.addModelFlag = false;
        this.setModelMouseMove();
        // this.setModelMouseMove();
        if (res) {
            var id = new Date().getTime();
            // 长度为62的数码数组
            var result = []
            var arr = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
            for (var i = 0; i < 4; i++) {
                var num = Math.floor(Math.random() * 62);
                result.push(arr[num]);
            }
            result.join('')
            var id = new Date().getTime() - Math.floor(Math.random() * 9000) + result;
            var obj = {
                id: id,
                sourceType: 'GLB',
@@ -33,11 +55,10 @@
                    id: id,
                    sourceType: 'GLB',
                }
            }
            Bus.$emit("addOtherData", "对象", obj);
        }
    },
    setModelMouseMove() {
        if (store.state.addModelFlag) {
@@ -62,11 +83,13 @@
        this.getModelLayer();
        var modelMatrix = this.getModelMatrix(res.style);
        var url = layerData.config.Model_URL + res.style.url;
        var model = this.modelLayer.add(Cesium.Model.fromGltf({
            id: res.id,
            url: url,
            scale: res.scale,
            minimumPixelSize: 64,
            minimumPixelSize: 200,
            maximumScale: 200000,
            modelMatrix: modelMatrix
        }));
@@ -80,7 +103,7 @@
        for (var i = 0; i < this.modelLayer._primitives.length; i++) {
            var model = this.modelLayer._primitives[i]
            if (model.id == res.id) {
            if (model.id === res.id) {
                this.modelLayer.remove(this.modelLayer._primitives[i]);
            }
        }
@@ -155,7 +178,6 @@
        var sm = Cesium.Matrix4.fromScale(new Cesium.Cartesian3(res.scale, res.scale, res.scale), new Cesium.Matrix4());
        model.modelMatrix = Cesium.Matrix4.multiply(model.modelMatrix, sm, model.modelMatrix);
    },
    getModelMatrix(res) {
        var headingPitchRoll = new Cesium.HeadingPitchRoll(res.heading, res.pitch, res.roll);
        var position = Cesium.Cartesian3.fromDegrees(res.longitude, res.latitude, res.altitude);
@@ -165,7 +187,6 @@
            new Cesium.Matrix4());
        return modelMatrix;
    },
    getModelLayer() {
        if (this.modelLayer == null) {
            this.modelLayer = new Cesium.PrimitiveCollection();
@@ -173,5 +194,31 @@
            Viewer.scene.primitives.add(this.modelLayer);
        }
    },
    addImgUpLayer(res) {
        var url = layerData.config.Model_URL + '/Data/img/mark1.png'
        var citizensBankPark = viewer.entities.add({
            name: res.name,
            id: res.id,
            position: Cesium.Cartesian3.fromDegrees(res.x, res.y, res.z),
            billboard: { //图标
                image: url,
                width: 32,
                height: 44,
                pixelOffset: new Cesium.Cartesian3(0, -40, 0),
            },
            properties: res,
        });
    },
    delImgUpLayer(res) {
        var entity = Viewer.entities._entities._array;
        for (var i = 0; i < entity.length; i++) {
            var model = entity[i]
            if (model.id === res.id) {
                Viewer.entities.remove(model)
            }
        }
    },
}
export default model;