From 92f7479c89d8573d954e5bf37a464c1bbef396eb Mon Sep 17 00:00:00 2001 From: yxl <584911253@qq.com> Date: 星期四, 13 二月 2025 15:03:14 +0800 Subject: [PATCH] commit --- src/assets/js/mapSetFunc.js | 306 +++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 272 insertions(+), 34 deletions(-) diff --git a/src/assets/js/mapSetFunc.js b/src/assets/js/mapSetFunc.js index 535b587..816c19a 100644 --- a/src/assets/js/mapSetFunc.js +++ b/src/assets/js/mapSetFunc.js @@ -13,11 +13,28 @@ case "aroundPoi": this.creatAroundPoi(res); break; + case "getStrike": + this.creatAroundPoi(res); + break; case "queryRelationship": this.creatQueryRelationship(res); break; case "queryMeta": this.creatQueryMeta(res); + break; + case "aroundPoi_2": + // this.addWfsLayer(res); + this.addTetrahedron(res); + break; + case "getParam": + this.addTetrahedron(res); + break; + case "getTAIWAN": + this.addWfsLayer(res); + // this.addTetrahedron(res); + break; + case "attackentity": + this.addPolyLine(res); break; } }, @@ -37,16 +54,19 @@ this.setModelChangeColor(colors); }, setModelChangeColor(res) { - const modelLayer = mapServer.listData.filter((res) => { - if (res.name == config.modelLayer) { - return res; + console.log('mapServer.listData', mapServer.listData, config.modelLayer); + const modelLayer = mapServer.listData.filter((obj) => { + if (obj.name == config.modelLayer) { + return obj; } }); if (modelLayer.length <= 0) return; + earthCtrl.userScene.flyTo(modelLayer[0].layer); modelLayer[0].layer.style = new Cesium.Cesium3DTileStyle({ color: { evaluateColor: (feature) => { const id = feature.getProperty("id"); + console.log("id**********", id); const color = res.filter((item) => { if (item.ids.indexOf(id) > -1) { return item; @@ -153,37 +173,31 @@ }, creatPoiMap(res) { - const poi = res.data; - // const label = earthCtrl.factory.createLabel({ - // lon: poi._x, - // lat: poi._y, - // text: this.getName(poi), - // alt: 150, - // image: SmartEarthRootUrl + "Workers/image/fighter.png", - // // 鏂囨湰鍋忕Щ閲� - // pixelOffset: new SmartEarth.Cesium.Cartesian2(0, -50), - // // 鍥剧墖鍋忕Щ閲� - // iPixelOffset: new SmartEarth.Cesium.Cartesian2(0, -20) - // }); - const label = earthCtrl.factory.createLabel({ - name: "鍒涘缓鏂囨湰", - id: earthCtrl.factory.createUUID(), - text: this.getName(poi), - font: "22pt monospace", - outlineWidth: 2, - fillColor: SmartEarth.Cesium.Color.YELLOW, - lon: poi._x, - lat: poi._y, - alt: poi.height ? poi.height + 10 : 100, - iDistanceDisplayCondition: (100, 3000) - }); - setTimeout(() => { - this.setEntityTitlesChangeColor(poi.seid); - }, 200); - earthCtrl.userScene.flyTo(label); - this.layerList.push({ - layer: label, - func: res.func + res.data.forEach((poi, index) => { + // const poi = res.data[0]; + console.log('poi------', poi) + const label = earthCtrl.factory.createLabel({ + name: "鍒涘缓鏂囨湰", + id: earthCtrl.factory.createUUID(), + text: poi.name,//this.getName(poi), + font: "22pt monospace", + outlineWidth: 2, + fillColor: SmartEarth.Cesium.Color.YELLOW, + lon: poi.lontitude, + lat: poi.lattitude, + alt: poi.height ? poi.height + 10 : 100, + iDistanceDisplayCondition: (100, 3000) + }); + setTimeout(() => { + this.setEntityTitlesChangeColor(poi.seid); + }, 200); + if (index == 0) { + earthCtrl.userScene.flyTo(label); + } + this.layerList.push({ + layer: label, + func: res.func + }); }); }, setEntityTitlesChangeColor(res) { @@ -231,6 +245,20 @@ return name; }, creatAroundPoi(res) { + let colors = []; + res.data.forEach((element) => { + colors.push({ + name: element.type, + color: element.color, + ids: element.list + }); + }) + console.log('colors----', colors); + store.state.setListColor = colors; + store.state.showLenged = true; + this.setModelChangeColor(colors); + }, + creatAroundPoi1111(res) { const poi = res.data; var std = []; var feature = { @@ -312,6 +340,185 @@ } }); }, + + // 娣诲姞wfs + addWfsLayer(res) { + if (window.terrain) { + window.terrain.removeFromMap(); + window.terrain = null; + } + // earthCtrl.viewer.scene.globe.show = false; + earthCtrl.viewer.camera.flyTo({ + destination: { + x: -3475710.5684351875, + y: 5625834.799523204, + z: 2729961.751894543, + }, + orientation: { + heading: 5.73978482494632, + pitch: -1.2817819264676036, + roll: 6.282989918773924, + }, + }); + const layer1 = earthCtrl.factory.createWfsLayer('point', { + urls: 'https://cim.smartearth.cn/geoserver/JiaShanBase/ows', + layer: 'JiaShanBase:RadarSpot', + text: '[JiaShanBase:Type]', + color: '#de3', + disableDepthTestDistance: Infinity + }) + this.layerList.push({ + layer: layer1, + func: res.func + }); + const layer2 = earthCtrl.factory.createWfsLayer('polyline', { + urls: 'https://cim.smartearth.cn/geoserver/JiaShanBase/ows', + layer: 'JiaShanBase:RadarL', + width: 1.5, + color: '#87CEFA', + disableDepthTestDistance: Number.POSITIVE_INFINITY, + }) + this.layerList.push({ + layer: layer2, + func: res.func + }); + const layer3 = earthCtrl.factory.createWfsLayer('polyline', { + urls: 'https://cim.smartearth.cn/geoserver/JiaShanBase/ows', + layer: 'JiaShanBase:RadarM', + width: 1.5, + color: '#de3', + disableDepthTestDistance: Number.POSITIVE_INFINITY, + }) + this.layerList.push({ + layer: layer3, + func: res.func + }); + const layer4 = earthCtrl.factory.createWfsLayer('polyline', { + urls: 'https://cim.smartearth.cn/geoserver/JiaShanBase/ows', + layer: 'JiaShanBase:RadarS', + width: 1.5, + color: '#FF0000', + disableDepthTestDistance: Number.POSITIVE_INFINITY, + }) + this.layerList.push({ + layer: layer4, + func: res.func + }); + this.addRaderLayer(res); + }, + //闆疯揪閬僵鎵弿 + addRaderLayer(res) { + //闆疯揪閬僵鎵弿锛堣嚜瀹氫箟锛� + const option = { + radius: 150000, //鍗婂緞 + 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]; + // 闆疯揪閬僵 + const layer = earthCtrl.factory.createRadarMaskScan('闆疯揪閬僵鎵弿1', position1, option) + this.layerList.push({ + layer: layer, + func: 'radarMaskScan' + }); + }, + //瑙嗛敟 + addTetrahedron(res) { + const modelLayer = mapServer.listData.filter((obj) => { + if (obj.name == config.modelLayer) { + return obj; + } + }); + let ids = []; + res.data.forEach((item, index) => { + const tetrahedron = earthCtrl.factory.addTetrahedron({ + position: { + lon: item.lontitude, + lat: item.lattitude, + height: item.height + }, + multiple: 0.05, + scale: new SmartEarth.Cesium.Cartesian3(30, 30, 30), + color: "#FF0000", + outlineColor: "#FF0000" + }); + if (index == 0) { + // 灏嗙粡绾害杞崲涓篊artesian3鍧愭爣 + const position = Cesium.Cartesian3.fromDegrees(item.lontitude, item.lattitude - 0.01, 500); + // 鍒涘缓涓�涓竟鐣岀悆 (Bounding Sphere)锛屽亣璁惧崐寰勪负500 + const boundingSphere = new Cesium.BoundingSphere(position, 1000); + // 浣跨敤 flyToBoundingSphere 瀹氫綅鐩告満 + earthCtrl.viewer.camera.flyToBoundingSphere(boundingSphere, { + duration: 3.0, // 椋炶鐨勬椂闂� + offset: new Cesium.HeadingPitchRange(0, Cesium.Math.toRadians(-30), 6.28316028073749), + }); + // earthCtrl.camera.flyTo(item.lontitude, item.lattitude, 5000, 0, -90, 0, 2); + } + ids.push(item.uuid); + this.layerList.push({ + layer: tetrahedron, + func: 'tetrahedron' + }); + }); + modelLayer[0].layer.style = new Cesium.Cesium3DTileStyle({ + color: { + evaluateColor: (feature) => { + const id = feature.getProperty("id"); + if (ids.indexOf(id) > -1) { + console.log("id**********", id); + return new SmartEarth.Cesium.Color.fromCssColorString( + '#FF0000' + ); + } + } + } + }); + }, + + //缁樺埗绾� + addPolyLine(res) { + // 瑙f瀽 LINESTRING 瀛楃涓蹭负缁忕含搴﹀潗鏍囨暟缁� + const coordinates = res.bombpoint + .replace("LINESTRING", "") // 鍘婚櫎 'LINESTRING' 閮ㄥ垎 + .replace(/[()]/g, "") // 鍘婚櫎鎷彿 + .split(",") // 鎸夐�楀彿鍒嗗壊 + .map(coord => { + const [lon, lat] = coord.trim().split(" "); // 灏嗘瘡瀵瑰潗鏍囧垎寮� + return [parseFloat(lon), parseFloat(lat)]; // 杞崲涓烘暟瀛� + }); + const positions = coordinates.map(coord => { + return { + x: coord[0], + y: coord[1], + z: 21 + }; + }); + positions.forEach((item, index) => { + const particle = earthCtrl.factory.createParticleEffect("flame", item, { + translation: SmartEarth.Cesium.Cartesian3.fromElements(0, 0, 0), //骞崇Щ + emissionRate: 500, + startScale: 15, + endScale: 45, + }); + if (index == positions.length / 2) { + earthCtrl.camera.flyTo(item.x, item.y, 3000, 0, -90, 0, 2); + } + this.layerList.push({ + layer: particle, + func: 'attackentity' + }); + }) + }, + removeAll() { store.state.setListColor = []; store.state.showLenged = false; @@ -349,6 +556,37 @@ this.layerList.splice(i, 1); i--; } + else if (obj.func == "aroundPoi_2") { + this.layerList[i].layer.destroy(); + this.layerList.splice(i, 1); + i--; + } + else if (obj.func == "getTAIWAN") { + this.layerList[i].layer.destroy(); + this.layerList.splice(i, 1); + i--; + } + else if (obj.func == "radarMaskScan") { + this.layerList[i].layer.deleteObject(); + this.layerList.splice(i, 1); + i--; + } + else if (obj.func == "tetrahedron") { + this.layerList[i].layer.deleteObject(); + this.layerList.splice(i, 1); + i--; + } + else if (obj.func == "attackentity") { + this.layerList[i].layer.deleteObject(); + this.layerList.splice(i, 1); + i--; + } + } + if (!window.terrain) { + window.terrain = earthCtrl.factory.createTerrainLayer({ + sourceType: "ctb", + url: config.terrainUrl + }); } } }; -- Gitblit v1.9.3