suerprisePlus
2024-08-21 7d57b0fef0f220dfe7c868ce1113a7ce6eb6c468
src/assets/js/mapSdk/index.js
@@ -1,15 +1,17 @@
import mapConfig from './mapConfig';
import mapData from './mapData';
import mapServer from './mapServe';
import * as turf from '@turf/turf';
import store from '@/store';
const mapInit = {
    Init() {
    async Init() {
        window.earthCtrl = new SmartEarth.EarthCtrl('sdkContainer', {
            // 隐藏默认底图
            defaultImagery: false,
            // 隐藏logo
            printLog: false,
            // sceneMode: SmartEarth.Cesium.SceneMode.SCENE2D
            StaticFileBaseUrl: '/CimSDK/',
        });
        // 初始化Cesium
        window.Cesium = SmartEarth.Cesium;
@@ -17,26 +19,69 @@
        window.Viewer = earthCtrl.viewer;
        //设置地球颜色
        Viewer.scene.globe.baseColor = Cesium.Color.fromCssColorString('#A9A9A9');
        Viewer.imageryLayers.removeAll()
        // 地形加载
        const terrain = config.terrain;
        if (terrain.isShow && terrain.isUrl) {
            const terrainProvider = await Cesium.CesiumTerrainProvider.fromUrl(terrain.isUrl, {
                requestWaterMask: true,
                requestVertexNormals: true,
            });
            Viewer.terrainProvider = terrainProvider;
        }
        // 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,
        // });
        mapServer.addLayer({
            serveType: 'tdMap',
            url: baseLayer.sUrl + baseLayer.vecLayer + baseLayer.lUrl,
            serveType: 'WMS',
            url: config.geoServer.layers[1],
        });
        // 添加天地图标注
        mapServer.addLayer({
            serveType: 'tdMap',
            url: baseLayer.sUrl + baseLayer.cvaLayer + baseLayer.lUrl,
        });
        // mapServer.addLayer({
        //     serveType: 'tdMap',
        //     url: baseLayer.sUrl + baseLayer.cvaLayer + baseLayer.lUrl,
        // });
        // 初始化视角
        this.setdefaultPerspective();
    },
    setdefaultPerspective() {
        mapConfig.sertCameraTo(mapData.defaultPerspective);
    },
    addMapClick() {
        // 为viewer添加鼠标点击事件监听
        Viewer.screenSpaceEventHandler.setInputAction((event) => {
            // 获取点击位置的世界坐标
            var pickedFeature = Viewer.scene.pick(event.position);
            if (Cesium.defined(pickedFeature)) {
                console.log(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);
                        }
                    }
                }
            }
        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
    },
};
export default mapInit;