月球大数据地理空间分析展示平台-【前端】-月球2期前端
surprise
2023-11-29 36fbd1e5a40e319e6ac5f43d11c99ba4b66e93a3
src/assets/js/Map/temporaryTools.js
@@ -1,5 +1,7 @@
import store from "@/store";
import { none } from "ol/centerconstraint";
import * as turf from "@turf/turf";
import WKT from "terraformer-wkt-parser";
var temporaryTool = {
    isedit: false,
    removeTemporaryLayer(res) {
@@ -10,17 +12,73 @@
            }
        }
    },
    locationTemporaryLayer(res){
    removeTemporaryLayerAll() {
        var entities = window.Viewer.entities._entities._array;
        for (var i = 0; i < entities.length; i++) {
            if (entities[i]._shpType && entities[i]._shpType == "temporaryLayer") {
                window.Viewer.entities.remove(entities[i])
                i--;
            }
        }
    },
    getWKT(res) {
        var geom = res.geometry;
        var coord = null;
        debugger
        switch (res.type) {
            case "point":
            case "label":
                coord = turf.point([geom.lng, geom.lat]);
                break;
            case "polygon":
                var std = [];
                for (var i = 0; i < geom.length; i++) {
                    if (i % 2 == 0) {
                        std.push([geom[i], geom[i + 1]])
                    }
                }
                std.push(std[0])
                debugger
                coord = turf.polygon([std]);
                break;
            case "polyline":
                var std = [];
                for (var i = 0; i < geom.length; i++) {
                    if (i % 2 == 0) {
                        std.push([geom[i], geom[i + 1]])
                    }
                }
                coord = turf.lineString(std);
                break;
            case "rectangle":
                coord = turf.polygon([[
                    [geom[0], geom[1]],
                    [geom[0], geom[3]],
                    [geom[2], geom[3]],
                    [geom[2], geom[1]],
                    [geom[0], geom[1]],
                ]]);
                break;
        }
        var wkt = WKT.convert(coord.geometry);
        debugger
        return WKT.convert(coord.geometry);
    },
    locationTemporaryLayer(res) {
        var entities = window.Viewer.entities._entities._array;
        for (var i in entities) {
            if (entities[i].id == res.id && entities[i]._shpType == res.shpType) {
                window.Viewer.flyTo(entities[i], {
                    offset: {
                      heading: Cesium.Math.toRadians(0.0),
                      pitch: Cesium.Math.toRadians(-90),
                      range: 400
                        heading: Cesium.Math.toRadians(0.0),
                        pitch: Cesium.Math.toRadians(-90),
                        range: 400
                    }
                  });
                });
            }
        }
    },
@@ -143,11 +201,13 @@
                    res.near,
                    res.far
                ),
                outline: true,
                outline: false,
                outlineWidth: res.width,
                outlineColor: Cesium.Color.fromCssColorString(
                    res.outlineColor
                ).withAlpha(res.outlineAlpha),
                heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
            },
        });
    },
@@ -277,6 +337,7 @@
            var coord = this.setCartesianToEightFour(val[i])
            geom.push(coord.lng, coord.lat)
        }
        return {
            id: this.isedit ? res.id : (new Date()).getTime(),
            cnName: res.name,
@@ -290,7 +351,7 @@
            type: 'polygon',
            shpType: 'temporaryLayer',
            layerType: '多边形',
            outline: res.outline != null ? res.outline : false,
            outline: res.polygon.outline != null ? res.polygon.outline._value : false,
            width: res.polygon.outlineWidth ? res.polygon.outlineWidth._value : 1,
        }
    },
@@ -420,6 +481,7 @@
            layerType: '基本点',
            heightReference: res.point.disableDepthTestDistance != null ? false : true,
            size: res.point.pixelSize._value,
        }
    },