import axios from "axios"; import mapConfig from "./mapConfig"; import mapServer from "./mapServer"; import modelLayer from "./modelLayer"; import wfsConfig from "./wfsConfig"; import mapInfo from "./mapInfo"; import layerJson from "./mapJsonLayer"; import * as turf from "@turf/turf"; import mapModel from "./mapModel"; const mapViewer = { configTooles: null, layer: null, initMap() { window.earthCtrl = new SmartEarth.EarthCtrl("sdkContainer", { // 隐藏默认底图 defaultImagery: false, // 隐藏logo printLog: false, // maxViewHeight: 1200000 // sceneMode: SmartEarth.Cesium.SceneMode.SCENE2D }); window.Cesium = SmartEarth.Cesium; window.Viewer = earthCtrl.viewer; Viewer.scene.globe.baseColor = Cesium.Color.fromCssColorString("#A9A9A9"); //设置地球颜色 var handler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas); handler.setInputAction(function (clickEvent) { var pickedObject = Viewer.scene.pick(clickEvent.position); if (Cesium.defined(pickedObject)) { // 这里可以获取到点击的实体或其他对象 var featureId = pickedObject.getProperty("id"); console.log(featureId); // pickedObject.color = Cesium.Color.RED; console.log("点击的对象:", pickedObject); } }, Cesium.ScreenSpaceEventType.LEFT_CLICK); //加载全球地形 this.addTerrain(); this.addImageLayer(); // this.addqqmap(); let now2 = new Date(); let todayNoon = new Date( now2.getFullYear(), now2.getMonth(), now2.getDate(), 12, 0, 0 ); var res = { longitude: 121.5898036178841, latitude: 23.93799083591751, height: 2732.163687177577 }; Viewer.clock.currentTime = Cesium.JulianDate.fromDate(todayNoon); earthCtrl.camera.flyTo( res.longitude, res.latitude, res.height, 4.501790216143808, -32.230361363631324, 0.001313831409284339, 2 ); // setTimeout(() => { // mapModel.init(); // }, 5000); // mapServer.addServer({ // sourceType: "Tileset", // url: "http://103.135.160.14:9038/gisserver/c3dserver/JiashanBase/tileset.json", // id: "c8f3f75d-8730-44ec-81b7-f8ae4c5fd742" // }); // this.addGlBModel({ // url: "http://localhost/pwyth/modles/通讯设施.glb", // // url: "http://localhost/pwyth/glb/BDZ.glb", // lon: 121.614202387521061, // lat: 23.990136825668284, // alt: 100 // }); // this.addTetrahedron({ // lon: 121.614202387521061, // lat: 23.990136825668284, // alt: 150 // }) // this.addTetrahedron({ // lon: 121.58663347489937, // lat: 24.024697711615325, // alt: 100 // }) // Viewer.scene.postRender.addEventListener(() => { // var cameraHeight = Viewer.camera.positionCartographic.height; // if (cameraHeight / 1000 < 5) { // if (this.layer) { // this.layer.show = false; // } // } else { // if (this.layer) { // this.layer.show = true; // } else { // this.addqqmap(); // } // } // }); // mapInfo.setEntityQueryInput(); // this.addWfsLayer() // this.addRaderLayer() // this.addModel() // this.addTetrahedron({ // lon: 121.614202387521061, // lat: 23.990136825668284, // alt: 150 // }) earthCtrl.measure.pickPosition({}, function (e) { console.info(e); }); }, addTetrahedron(res) { earthCtrl.factory.addTetrahedron({ position: { lon: res.lon, lat: res.lat, height: res.alt }, multiple: 0.05, scale: new SmartEarth.Cesium.Cartesian3(100, 100, 100), color: "#FF0000", outlineColor: "#FF0000" }); }, addGlBModel(res) { var style = { longitude: res.lon, latitude: res.lat, altitude: 100, heading: 0, pitch: 0, roll: 0 }; const modelMatrix = mapConfig.getModelMatrix(style); const modelLayer = new Cesium.PrimitiveCollection(); Viewer.scene.primitives.add(modelLayer); modelLayer.add( Cesium.Model.fromGltf({ id: res, url: res.url, scale: 1, minimumPixelSize: 20, maximumScale: 20, modelMatrix: modelMatrix }) ); }, createPolygonGeoJsonFeatureLayer() { const obj = mapConfig.setCartesian3To84( -3053189.741118935, 4965028.148318093, 2581134.003585035 ); var buffered = turf.circle(obj, 140, { units: "kilometers", steps: 200, properties: { foo: "bar" } }); const data = { outline: true, outlineColor: "#0f0", outlineWidth: 5, material: "#0000ff80", mask: true }; const geom = { type: "FeatureCollection", features: [ { type: "Feature", properties: { adcode: 340100, name: "合肥市", center: [117.283042, 31.86119], centroid: [117.360447, 31.762594], childrenNum: 9, level: "city", acroutes: [100000, 340000], parent: { adcode: 340000 } }, geometry: { type: "MultiPolygon", coordinates: buffered.geometry.coordinates } } ] }; const url = config.localUrl + "/data/hefei.json"; earthCtrl.factory.createPolygonGeoJsonFeatureLayer( "", [url], data, "0", true, function (data) { console.log("456", data); } ); }, addImageLayer() { mapServer.addServer({ sourceType: "arcgis", url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer" }); }, addqqmap() { this.layer = earthCtrl.factory.createImageryLayer({ sourceType: "qqmap", url: "https://rt0.map.gtimg.com/tile?z={z}&x={x}&y={reverseY}&styleid=4&scene=0", tilingScheme: earthCtrl.core.getOffsetTilingScheme() // 偏移纠正 }); }, // 添加wfs addWfsLayer() { earthCtrl.viewer.camera.flyTo({ destination: { x: -3475710.5684351875, y: 5625834.799523204, z: 2729961.751894543, }, orientation: { heading: 5.73978482494632, pitch: -1.2817819264676036, roll: 6.282989918773924, }, }); earthCtrl.factory.createWfsLayer('point', { urls: 'https://cim.smartearth.cn/geoserver/JiaShanBase/ows', layer: 'JiaShanBase:RadarSpot', text: '[JiaShanBase:Type]', color: '#de3', disableDepthTestDistance: Infinity }) earthCtrl.factory.createWfsLayer('polyline', { urls: 'https://cim.smartearth.cn/geoserver/JiaShanBase/ows', layer: 'JiaShanBase:RadarL', width: 1.5, color: '#87CEFA', }) const layer1 = earthCtrl.factory.createWfsLayer('polyline', { urls: 'https://cim.smartearth.cn/geoserver/JiaShanBase/ows', layer: 'JiaShanBase:RadarM', width: 1.5, color: '#de3', }) const layer2 = earthCtrl.factory.createWfsLayer('polyline', { urls: 'https://cim.smartearth.cn/geoserver/JiaShanBase/ows', layer: 'JiaShanBase:RadarS', width: 1.5, color: '#FF0000', }) }, addRaderLayer() { //雷达遮罩扫描(自定义) const option = { radius: 1000, //半径 yaw: 0, //雷达方向(可选) angle: 120, //雷达夹角(可选) scanAngle: 30, //扫描夹角(可选) speed: 5, //倍速(可选) maxLat: 90, //下维度(可选) minLat: 45, //上维度(可选) stackPartitions: 40, //横向网格数(可选) slicePartitions: 80, //纵向网格数(可选) //color: 'rgba(255,255,255,0.5)', //雷达遮罩颜色(可选) //outlineColor: 'rgba(255,255,255,0.5)', //雷达遮罩边框线颜色(可选) //scanColor: 'rgba(255,0,0,0.5)', //扫描颜色(可选) }; const position1 = [121.614202387521061, 23.990136825668284, 0]; // 雷达遮罩 earthCtrl.factory.createRadarMaskScan('雷达遮罩扫描1', position1, option) }, addModel() { const entity = earthCtrl.viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees( 121.576830, 24.006230, ), model: { uri: '/gltf/ddc.glb', scale: 20, heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, // disableDepthTestDistance: Number.POSITIVE_INFINITY // 禁用深度测试 }, label: { show: true, text: '经度:121.576830,纬度:24.006230', color: Cesium.Color.fromCssColorString("#fff"), font: "normal 14px MicroSoft YaHei", showBackground: true, outlineColor: Cesium.Color.WHITE, pixelOffset: new Cesium.Cartesian2(10, -30), horizontalOrigin: Cesium.HorizontalOrigin.CENTER, verticalOrigin: Cesium.VerticalOrigin.BOTTOM, heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, }, }); }, //加载全球地形 addTerrain() { window.terrain = earthCtrl.factory.createTerrainLayer({ sourceType: "ctb", url:config.terrainUrl }); } }; export default mapViewer;