From 30e393df7b1d89c4172a7f4bec6e80e2dc00c373 Mon Sep 17 00:00:00 2001 From: suerprisePlus <15810472099@163.com> Date: 星期一, 05 八月 2024 10:14:49 +0800 Subject: [PATCH] 语义功能添加 --- src/assets/js/mapSdk/menuManager.js | 132 +++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 129 insertions(+), 3 deletions(-) diff --git a/src/assets/js/mapSdk/menuManager.js b/src/assets/js/mapSdk/menuManager.js index 523bcab..4e31acb 100644 --- a/src/assets/js/mapSdk/menuManager.js +++ b/src/assets/js/mapSdk/menuManager.js @@ -1,5 +1,13 @@ const menuManager = { pid: null, + pointFly: null, + particle: null, + AnalysisFlood: null, + colorAll: { + point: SmartEarth.Cesium.Color.fromCssColorString('#ff0000'), + polyline: SmartEarth.Cesium.Color.fromCssColorString('#ffff0050'), + polygon: SmartEarth.Cesium.Color.fromCssColorString('#ffff0050'), + }, init(res) { switch (res.pid) { case 's1': //閰嶇綉宸℃ @@ -60,10 +68,61 @@ case 'a1': return res.name; break; + case 'a2': + if (this.particle) { + this.particle.remove(); + this.particle = null; + return; + } + + var that = this; + var handler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas); + handler.setInputAction((event) => { + let cartesian = Viewer.camera.pickEllipsoid(event.position); + let cartographic = Cesium.Cartographic.fromCartesian(cartesian); + + if (cartesian) { + let lng = parseFloat(Cesium.Math.toDegrees(cartographic.longitude)).toFixed(6); // 缁忓害 + let lat = parseFloat(Cesium.Math.toDegrees(cartographic.latitude)).toFixed(6); // 绾害 + var alt = Viewer.camera.positionCartographic.height.toFixed(0); + that.setCreateFireAnalysis(lng, lat, alt); + } + handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); + }, Cesium.ScreenSpaceEventType.LEFT_CLICK); + break; + case 'a3': + if (this.AnalysisFlood) { + this.AnalysisFlood.endWater(); + this.AnalysisFlood = undefined; + return + } + var url = SmartEarthRootUrl + 'Workers/image/33.gif'; + const method = { + pointSelect: true, // rectangle: 'rectangle', + spood: 20, + GroupID: 0, + url: url, + }; + this.AnalysisFlood = earthCtrl.analysis.createSubmergence(method, (value) => {}); + break; default: return null; break; } + }, + setCreateFireAnalysis(lon, lat, alt) { + this.particle = earthCtrl.factory.createParticleEffect( + 'flame', + { + x: lon, + y: lat, + z: 0, + }, + { + translation: SmartEarth.Cesium.Cartesian3.fromElements(0, 0, 0), //骞崇Щ + }, + (data) => {} + ); }, //鍥惧眰绠$悊 setMenuS4(res) { @@ -80,12 +139,30 @@ setMenuS5(res) { switch (res.id) { case 'a1': - case 'a3': + if (this.pointFly) { + this.pointFly.removeFromMap(); + } else { + earthCtrl.factory.createSimpleGraphic('billboard', {}, (entity) => { + const position = entity.position.getValue(); + const coordinate = earthCtrl.core.toDegrees(position); + this.pointFly = earthCtrl.camera.rotateCamera({ + lon: coordinate.lon, + lat: coordinate.lat, + distance: 1000, + pitch: -30, + }); + }); + } return null; break; case 'a2': return res.name; break; + case 'a3': + earthCtrl.analysis.createIndoormode({ showHelp: true }); + return null; + break; + default: return null; break; @@ -104,11 +181,60 @@ }, // 鏍囩粯 setMenuS7(res) { + switch (res.id) { + case 'a1': + earthCtrl.factory.createSimpleGraphic('point', {}, (entity) => {}); + break; + case 'a2': + earthCtrl.factory.createSimpleGraphic('label', {}, (entity) => {}); + break; + case 'a3': + earthCtrl.factory.createSimpleGraphic('polyline', { showSize: false }, (entity) => {}); + break; + case 'a4': + earthCtrl.factory.createSimpleGraphic('rectangle', { showSize: false }, (entity) => {}); + break; + case 'a5': + earthCtrl.factory.createSimpleGraphic('polygon', { showSize: false }, (entity) => {}); + break; + case 'a6': + earthCtrl.factory.SimpleGraphic.clear(); + break; + default: + break; + } return null; }, // 娴嬮噺 setMenuS8(res) { - return null; + const colorAll = this.colorAll; + switch (res.id) { + case 'a1': + earthCtrl.measure.clampLineDistance(colorAll, (e) => {}); + break; + case 'a2': + earthCtrl.measure.altitude(colorAll, (e) => {}); + break; + case 'a3': + earthCtrl.measure.surfaceArea( + { + ...colorAll, + tin: true, // 鏄惁鏄剧ずtin涓夎缃� + onlyTerrain: false, // 鏄惁鍙祴閲忕簿缁嗗湴褰� + }, + (e) => {} + ); + break; + case 'a4': + earthCtrl.measure.planeArea(colorAll, (e) => {}); + break; + case 'a5': + earthCtrl.measure.horizontalDistance(colorAll, (e) => {}); + break; + case 'a6': + earthCtrl.measure.clearResult(); + break; + } }, // 鐗规晥 setMenuS9(res) { @@ -117,7 +243,7 @@ return res.name; break; case 'a2': - return res.name; + earthCtrl.factory.createScreenshot(); break; default: return null; -- Gitblit v1.9.3