suerprisePlus
2024-10-23 559f0776123a2205863b5787d5b8e1e012d397d3
src/assets/js/mapSdk/index.js
@@ -1,54 +1,120 @@
import mapConfig from './mapConfig';
import mapData from './mapData';
import mapServer from './mapServe';
import mapConfig from "./mapConfig";
import mapData from "./mapData";
import mapServer from "./mapServe.js";
import * as turf from "@turf/turf";
import store from "@/store";
const mapInit = {
    async Init() {
        console.log(location)
        window.earthCtrl = new SmartEarth.EarthCtrl('sdkContainer', {
            // 隐藏默认底图
            defaultImagery: false,
            // 隐藏logo
            printLog: false,
            // sceneMode: SmartEarth.Cesium.SceneMode.SCENE2D
            StaticFileBaseUrl: '/CimSDK/',
        });
        // 初始化Cesium
        window.Cesium = SmartEarth.Cesium;
        // 初始化Viewer
        window.Viewer = earthCtrl.viewer;
        //设置地球颜色
        Viewer.scene.globe.baseColor = Cesium.Color.fromCssColorString('#A9A9A9');
        // 地形加载
        const terrain = config.terrain;
        if (terrain.isShow && terrain.isUrl) {
            const terrainProvider = await Cesium.CesiumTerrainProvider.fromUrl(terrain.isUrl, {
                requestWaterMask: true,
                requestVertexNormals: true,
            });
  async Init() {
    // 默认设置底图
    this.addImageLayer();
    // 添加鼠标点击事件
    this.addMapClick();
            Viewer.terrainProvider = terrainProvider;
    // window.earthCtrl = new SmartEarth.EarthCtrl(
    //     'sdkContainer',
    //     {
    //         // 隐藏默认底图
    //         defaultImagery: false,
    //         // 隐藏logo
    //         printLog: false,
    //         // sceneMode: SmartEarth.Cesium.SceneMode.SCENE2D
    //         StaticFileBaseUrl: '/CimSDK/',
    //     },
    //     {},
    //     {},
    //     () => {
    //         debugger
    //         // 初始化Cesium
    //         window.Cesium = SmartEarth.Cesium;
    //         // 初始化Viewer
    //         window.Viewer =  window.earthCtrl.Viewer;
    //         //设置地球颜色
    //         window.Viewer.scene.globe.baseColor = Cesium.Color.fromCssColorString('#A9A9A9');
    //         window.earthCtrl.Viewer.imageryLayers.removeAll();
    //         // // 地形加载
    //         // const terrain = config.terrain;
    //         // if (terrain.isShow && terrain.isUrl) {
    //         //     const terrainProvider = await Cesium.CesiumTerrainProvider.fromUrl(terrain.isUrl, {
    //         //         requestWaterMask: true,
    //         //         requestVertexNormals: true,
    //         //     });
    //         //     window.Viewer.terrainProvider = terrainProvider;
    //         // }
    //         this.setStartViwer();
    //     }
    // );
  },
  // async setStartViwer() {
  //     // Viewer.scene.screenSpaceCameraController.maximumZoomDistance =50000
  //     // 默认设置底图
  //     this.addImageLayer();
  //     // 添加鼠标点击事件
  //     this.addMapClick();
  // },
  addImageLayer() {
    const baseLayer = mapData.baseLayer;
    // 添加天地图底图
    // mapServer.addLayer({
    //     serveType: 'tdMap',
    //     url: baseLayer.sUrl + baseLayer.vecLayer + baseLayer.lUrl,
    // });
    console.log(config.geoServer);
    // console.log(mapServer);
    // mapServer.addLayer({
    //   serveType: "WMS",
    //   url:
    // });
    const serverUrl = config.geoServer;
    const layer = new Cesium.WebMapServiceImageryProvider({
        url:serverUrl.url + serverUrl.wms,
        layers: serverUrl.layers[1],
        parameters: {
            transparent: true,
            format: 'image/png',
            srs: 'EPSG:4490',
            styles: '',
            cql_filter: '',
        },
        tileWidth: 512,
        tileHeight: 512,
    });
    window.Viewer.imageryLayers.addImageryProvider(layer);
    // 添加天地图标注
    // mapServer.addLayer({
    //     serveType: 'tdMap',
    //     url: baseLayer.sUrl + baseLayer.cvaLayer + baseLayer.lUrl,
    // });
    // 初始化视角
    this.setdefaultPerspective();
  },
  setdefaultPerspective() {
    mapConfig.sertCameraTo(mapData.defaultPerspective);
  },
  addMapClick() {
    // 为viewer添加鼠标点击事件监听
    window.Viewer.screenSpaceEventHandler.setInputAction(event => {
      // 获取点击位置的世界坐标
      var pickedFeature = window.Viewer.scene.pick(event.position);
      if (Cesium.defined(pickedFeature)) {
        if (pickedFeature.id) {
          const obj = pickedFeature.id;
          var arr = [];
          for (var key in obj) {
            arr.push({
              name: key,
              val: obj[key]
            });
            store.dispatch("mapLayers/changeMapInfo", []);
            if (arr.length > 0) {
              store.dispatch("mapLayers/changeMapInfo", arr);
            }
          }
        }
        // 默认设置底图
        this.addImageLayer();
    },
    addImageLayer() {
        const baseLayer = mapData.baseLayer;
        // 添加天地图底图
        mapServer.addLayer({
            serveType: 'tdMap',
            url: baseLayer.sUrl + baseLayer.vecLayer + baseLayer.lUrl,
        });
        // 添加天地图标注
        mapServer.addLayer({
            serveType: 'tdMap',
            url: baseLayer.sUrl + baseLayer.cvaLayer + baseLayer.lUrl,
        });
        // 初始化视角
        this.setdefaultPerspective();
    },
    setdefaultPerspective() {
        mapConfig.sertCameraTo(mapData.defaultPerspective);
    },
      }
    }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
  }
};
export default mapInit;