基于北京SDK的方案预演功能
suerprisePlus
2024-06-13 28de79b44655118b1deffb5c9a8b06ec2904905b
src/assets/js/map/layerManage.js
@@ -22,6 +22,10 @@
      case "gltf":
        this.addGltfLayer(res);
        break;
      // gltf模型
      case "3DTiles":
        this.add3DTilesLayer(res);
        break;
      //天地图
      case "tdmap":
        this.addTdMapLayer(res);
@@ -29,6 +33,14 @@
      // 腾讯地图
      case "txmap":
        this.addTxMapLayer(res);
        break;
      // 腾讯地图
      case "WMS":
        this.addWMSLayer(res);
        break;
      // 腾讯地图
      case "TMS":
        this.addTMSLayer(res);
        break;
    }
  },
@@ -50,6 +62,8 @@
      var obj = this.layerManage[i];
      if (obj.id === res.id) {
        switch (obj.type) {
          case "WMS":
          case "TMS":
          case "label":
          case "billboard":
          case "polyline":
@@ -65,11 +79,42 @@
          case "gltf":
            earthCtrl.factory.removeModel(obj.layer);
            break;
          case "3DTiles":
            obj.layer.deleteObject();
            break;
        }
        this.layerManage.splice(i, 1);
        i--;
      }
    }
  },
  addTMSLayer(res) {
    const layer = earthCtrl.factory.createImageryLayer({
      sourceType: "tms",
      url: res.url
    });
    this.layerManage.push({
      id: res.id,
      layer: layer,
      type: "TMS"
    });
  },
  addWMSLayer(res) {
    const layer = earthCtrl.factory.createImageryLayer({
      sourceType: "wms",
      url: res.url,
      layers: "",
      parameters: {
        format: "image/png",
        srs: "EPSG:4326",
        version: 1.3
      }
    });
    this.layerManage.push({
      id: res.id,
      layer: layer,
      type: "WMS"
    });
  },
  addTdMapLayer(res) {
    var layer = earthCtrl.factory.createImageryLayer({
@@ -80,12 +125,12 @@
      format: "image/jpeg",
      maximumLevel: res.maximumLevel,
      layer: "",
      tileMatrixSetID: "",
      tileMatrixSetID: ""
    });
    this.layerManage.push({
      id: res.id,
      layer: layer,
      type: "tdmap",
      type: "tdmap"
    });
  },
  addTxMapLayer(res) {
@@ -98,15 +143,26 @@
        },
        sy: function (imageryProvider, x, y, level) {
          return ((1 << level) - y) >> 4;
        }
        },
      },
      tilingScheme: earthCtrl.core.getOffsetTilingScheme(), // 偏移纠正
      tilingScheme: earthCtrl.core.getOffsetTilingScheme() // 偏移纠正
    });
    this.layerManage.push({
      id: res.id,
      layer: layer,
      type: "txmap",
      type: "txmap"
    });
  },
  add3DTilesLayer(res) {
    const layer = earthCtrl.factory.create3DTilesets({
      url: res.url
    });
    earthCtrl.camera.flyToObj(layer);
    this.layerManage.push({
      id: res.id,
      layer: layer,
      type: "3DTiles"
    });
  },
  addGltfLayer(res) {
@@ -120,14 +176,14 @@
      scale: res.scale,
      minimumPixelSize: 100,
      id: {
        name: "gltf",
      },
        name: "gltf"
      }
    });
    this.layerManage.push({
      id: res.id,
      layer: layer,
      type: "gltf",
      type: "gltf"
    });
  },
  addPolylineSimpleGraphic(res) {
@@ -143,17 +199,17 @@
      name: style.name,
      lineColor: new SmartEarth.Cesium.PolylineGlowMaterialProperty({
        //折线发光材质
        color: SmartEarth.Cesium.Color.fromCssColorString(style.color), //颜色
        color: SmartEarth.Cesium.Color.fromCssColorString(style.color) //颜色
      }),
      lineWidth: style.width,
      isDepthTest: false,
      clampToGround: false,
      positions: positions,
      positions: positions
    });
    this.layerManage.push({
      id: res.id,
      layer: layer,
      type: "polyline",
      type: "polyline"
    });
  },
@@ -161,12 +217,12 @@
    var layer = earthCtrl.factory.createImageryLayer({
      sourceType: "arcgis",
      url: res.urls,
      enablePickFeatures: false,
      enablePickFeatures: false
    });
    this.layerManage.push({
      id: res.id,
      layer: layer,
      type: "arcgis",
      type: "arcgis"
    });
  },
  addFlowFieldLayer(res) {
@@ -183,7 +239,7 @@
          type: "Feature",
          geometry: {
            type: "LineString",
            coordinates: std,
            coordinates: std
          },
          properties: {
            osm_id: "66023824",
@@ -195,10 +251,10 @@
            maxspeed: 0,
            layer: 0,
            bridge: "F",
            tunnel: "F",
          },
        },
      ],
            tunnel: "F"
          }
        }
      ]
    };
    let layer = earthCtrl.factory.createPathLayer({
@@ -206,12 +262,12 @@
      color: "#0033FF", //线的颜色
      width: style.width, //线的宽度
      pointColor: "#FFFFFF", //移动点的颜色
      speed: 0.5,
      speed: 0.5
    });
    this.layerManage.push({
      id: res.id,
      layer: layer,
      type: "FlowField",
      type: "FlowField"
    });
  },
@@ -220,12 +276,12 @@
      sourceType: "gdmap",
      url: res.urls,
      minimumLevel: 3,
      maximumLevel: 18,
      maximumLevel: 18
    });
    this.layerManage.push({
      id: res.id,
      layer: layer,
      type: "gdmap",
      type: "gdmap"
    });
  },
@@ -242,12 +298,12 @@
      lat: position.lat,
      alt: position.alt,
      scale: style.scale,
      distanceDisplayCondition: style.distanceDisplayCondition,
      distanceDisplayCondition: style.distanceDisplayCondition
    });
    this.layerManage.push({
      id: res.id,
      layer: layer,
      type: "billboard",
      type: "billboard"
    });
  },
  getCartographic(res) {
@@ -255,7 +311,7 @@
    return {
      lon: Cesium.Math.toDegrees(cartographic.longitude),
      lat: Cesium.Math.toDegrees(cartographic.latitude),
      alt: cartographic.height,
      alt: cartographic.height
    };
  },
  addLabelSimpleGraphic(res) {
@@ -275,14 +331,14 @@
      backgroundColor: Cesium.Color.fromCssColorString(style.backgroundColor),
      scale: style.scale,
      distanceDisplayCondition: style.distanceDisplayCondition,
      clampToGround: true,
      clampToGround: true
    });
    this.layerManage.push({
      id: res.id,
      layer: layer,
      type: "label",
      type: "label"
    });
  },
  }
};
export default layerManage;