From 5332767287cb0740f0383429d4a9c26d66d4f065 Mon Sep 17 00:00:00 2001 From: zh <972939975@qq.com> Date: Fri, 19 Dec 2025 12:34:25 +0800 Subject: [PATCH] 12-19 --- src/Global/ClickCallback/index.js | 30 ++-- src/Global/MultiViewportMode/index.js | 30 +++- src/Global/SplitScreen/index.js | 21 +++ src/Global/efflect/index.js | 146 +++++++++++++++++- src/Obj/Analysis/TerrainExcavation/index.js | 4 +- src/Obj/Base/AssembleObject/index.js | 3 + .../Base/BaseSource/BaseModel/Model/index.js | 2 + src/Obj/Base/BillboardObject/index.js | 2 + src/Obj/Base/CircleDiffuse/index.js | 2 + src/Obj/Base/CircleObject/index.js | 2 + src/Obj/Base/CurvelineObject/index.js | 3 + src/Obj/Base/EllipseObject/index.js | 2 + src/Obj/Base/Explosion/index.js | 2 + src/Obj/Base/FlowLine/index.js | 2 + src/Obj/Base/GroundSvg/index.js | 2 + src/Obj/Base/ParticleEffects/Flame/index.js | 7 +- .../Base/ParticleEffects/Fountain/index.js | 7 +- src/Obj/Base/ParticleEffects/Smoke/index.js | 7 +- src/Obj/Base/ParticleEffects/Spout/index.js | 7 +- src/Obj/Base/PolygonObject/index.js | 43 ++++-- src/Obj/Base/PolyhedronObject/index.js | 2 + src/Obj/Base/PolylineObject/index.js | 3 + src/Obj/Base/RadarScan/index.js | 2 + src/Obj/Base/RadarScanStereoscopic/index.js | 2 + src/Obj/Base/SectorObject/index.js | 2 + src/Obj/Base/TextObject/GroundText/index.js | 2 + src/Obj/Base/TextObject/StandText/index.js | 2 + src/Obj/Base/TrajectoryMotion/index.js | 2 + src/Obj/Base/TrajectoryMotionObject/index.js | 3 + src/Obj/Base/WallRealStereoscopic/index.js | 15 +- src/Obj/Base/WallStereoscopic/index.js | 14 ++ src/Obj/Base/WaterSurface/index.js | 2 + 32 files changed, 330 insertions(+), 45 deletions(-) diff --git a/src/Global/ClickCallback/index.js b/src/Global/ClickCallback/index.js index cc940af..e511b8b 100644 --- a/src/Global/ClickCallback/index.js +++ b/src/Global/ClickCallback/index.js @@ -78,7 +78,7 @@ function openLeftClick(sdk, cb) { let obj = leftClickCallbackMap.get(key) if (obj) { - if (obj.that) { + if (obj.that && obj.that.show) { // 是否为多边形 if (obj.that.type === 'PolygonObject') { // 是否可点击y @@ -242,7 +242,7 @@ function openLeftClick(sdk, cb) { // 矢量 if (pick.id.type && pick.id.type === 'vector' && pick.id.parentId) { let obj = leftClickCallbackMap.get(pick.id.parentId) - if (obj.that.picking && obj.that.geojson) { + if (obj && obj.that && obj.that.picking && obj.that.geojson && obj.that.show) { for (let i = 0; i < obj.that.geojson.features.length; i++) { if (obj.that.geojson.features[i].id === pick.id._id) { obj.callback( @@ -261,7 +261,7 @@ function openLeftClick(sdk, cb) { if (pick.id.properties && pick.id.properties.id && leftClickCallbackMap.has(pick.id.properties.id._value)) { let obj = leftClickCallbackMap.get(pick.id.properties.id._value) - if (obj.that.picking) { + if (obj && obj.that && obj.that.picking && obj.that.show) { obj.callback( movement, pick.id.properties.id._value, @@ -270,7 +270,7 @@ function openLeftClick(sdk, cb) { } else if (leftClickCallbackMap.has(pick.id.id)) { let obj = leftClickCallbackMap.get(pick.id.id) - if (obj.that.picking) { + if (obj && obj.that && obj.that.picking && obj.that.show) { obj.callback( movement, pick.id.id, @@ -279,7 +279,7 @@ function openLeftClick(sdk, cb) { } else if (entityId && leftClickCallbackMap.has(entityId)) { let obj = leftClickCallbackMap.get(entityId) - if (obj.that.picking) { + if (obj && obj.that && obj.that.picking && obj.that.show) { obj.callback( movement, entityId, @@ -289,10 +289,12 @@ function openLeftClick(sdk, cb) { else if (pick.primitive) { if (typeof pick.id == 'string' && leftClickCallbackMap.has(pick.id)) { let obj = leftClickCallbackMap.get(pick.id) - obj.callback( - movement, - pick.id, - cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that) + if (obj && obj.that && obj.that.picking && obj.that.show) { + obj.callback( + movement, + pick.id, + cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that) + } } } } @@ -300,7 +302,7 @@ function openLeftClick(sdk, cb) { if (pick.primitive && pick.primitive.id) { if (leftClickCallbackMap.has(pick.primitive.id)) { let obj = leftClickCallbackMap.get(pick.primitive.id) - if (obj.that.picking) { + if (obj && obj.that && obj.that.picking && obj.that.show) { if (obj.that.type === 'bim') { if (YJ.Global.getBimPickStatus(sdk)) { obj.callback( @@ -322,7 +324,7 @@ function openLeftClick(sdk, cb) { if (pick.content && (!pick.primitive || !pick.primitive.id)) { if (leftClickCallbackMap.has(pick.content.tileset.id)) { let obj = leftClickCallbackMap.get(pick.content.tileset.id) - if (obj.that.picking) { + if (obj && obj.that && obj.that.picking && obj.that.show) { if (obj.that.type === 'bim') { if (YJ.Global.getBimPickStatus(sdk)) { obj.callback( @@ -390,7 +392,7 @@ function openRightClick(sdk) { let id if (pick.id.type && pick.id.type === 'vector' && pick.id.parentId) { let obj = rightClickCallbackMap.get(pick.id.parentId) - if (obj.that.picking && obj.that.geojson) { + if (obj && obj.that && obj.that.picking && obj.that.geojson && obj.that.show) { for (let i = 0; i < obj.that.geojson.features.length; i++) { if (obj.that.geojson.features[i].id === pick.id._id) { obj.callback( @@ -410,7 +412,7 @@ function openRightClick(sdk) { } if (rightClickCallbackMap.has(id)) { let obj = rightClickCallbackMap.get(id) - if (obj.that.picking) { + if (obj && obj.that && obj.that.picking && obj.that.show) { let cartesian = getcartesian(sdk, movement) if (!cartesian) { return @@ -426,7 +428,7 @@ function openRightClick(sdk) { if (pick && pick.content) { if (rightClickCallbackMap.has(pick.content.tileset.id)) { let obj = rightClickCallbackMap.get(pick.content.tileset.id) - if (obj.that.picking) { + if (obj && obj.that && obj.that.picking && obj.that.show) { if (obj.that.type === 'bim') { if (YJ.Global.getBimPickStatus(sdk)) { let cartesian = getcartesian(sdk, movement) diff --git a/src/Global/MultiViewportMode/index.js b/src/Global/MultiViewportMode/index.js index 70357ab..07b505d 100644 --- a/src/Global/MultiViewportMode/index.js +++ b/src/Global/MultiViewportMode/index.js @@ -9,6 +9,7 @@ import { FlwStatusSwitch, JwwStatusSwitch, getFlwStatus, getJwwStatus } from ".. import { SheetIndexStatusSwitch, getStatus } from '../SheetIndex' import { getLeftClickState, getRightClickState, getMoveState } from "../../Global/ClickCallback" import { openLeftClick, openRightClick, openMove } from "./ClickCallback" +import { rain, snow, fog, nightVision, skyStarry, illumination } from '../efflect' let sdk2D = null @@ -45,7 +46,7 @@ async function init(sdk) { openMove(sdk2D) } - // window.sdk2D = sdk2D + window.sdk2D = sdk2D solveBug() syncObject = { sdks: [sdk, sdk2], tools } await eventBind(sdk, 0, syncObject) @@ -82,6 +83,26 @@ async function init(sdk) { if (getJwwStatus(sdk)) { JwwStatusSwitch(sdk2, true) } + // 雨雪雾夜视星空光照 + let stages = sdk.viewer.scene.postProcessStages._stages + for (let i = 0; i < stages.length; i++) { + switch (stages[i].name) { + case 'rain': + rain(sdk2, true) + break + case 'snow': + snow(sdk2, true) + break + case 'fog': + fog(sdk2, true) + break + case 'czm_night_vision': + nightVision(sdk2, true) + break + } + } + skyStarry(sdk2, !sdk.viewer.scene.skyAtmosphere.show) + illumination(sdk2, sdk.viewer.shadows) sdk.entityMap.forEach((item, key) => { if (item.showView == 2) { @@ -162,6 +183,7 @@ async function syncData2(sdk, id, entityId) { callback = that.callback } + let newObject = await new that.constructor(sdk2D, options, callback) newObject.onClick = that.onClick newObject.onRightClick = that.onRightClick @@ -208,6 +230,9 @@ async function syncData2(sdk, id, entityId) { newObject.setSpreadProgressByTime(that.TweenAnimate._object.distance1 / that.TweenAnimate._valuesEnd.distance1 * that.spreadTime) } } + if (that.type === 'Explosion') { + newObject.entity.imgIndex = that.entity.imgIndex + } if (newObject.on && newObject.type !== 'glb') { if (newObject.type === 'vector') { newObject.data = that.data @@ -310,6 +335,9 @@ async function syncData2(sdk, id, entityId) { target.setSpreadProgressByTime(obj.TweenAnimate._object.distance1 / obj.TweenAnimate._valuesEnd.distance1 * obj.spreadTime) } } + if (obj.type === 'Explosion') { + target.entity.imgIndex = obj.entity.imgIndex + } if (target.on && obj.type !== 'glb') { if (target.type === 'vector') { target.data = obj.data diff --git a/src/Global/SplitScreen/index.js b/src/Global/SplitScreen/index.js index d0e149e..a48a108 100644 --- a/src/Global/SplitScreen/index.js +++ b/src/Global/SplitScreen/index.js @@ -9,6 +9,7 @@ import { MouseRightMenu, getMouseRightMenuStatus } from '../mouseRightMenu'; import { getLeftClickState, getRightClickState, getMoveState } from '../ClickCallback' import { openLeftClick, openRightClick, openMove } from './ClickCallback' import { SheetIndexStatusSwitch, getStatus } from '../SheetIndex' +import { rain, snow, fog, nightVision, skyStarry, illumination } from '../efflect' let state = false @@ -304,6 +305,26 @@ async function init(sdk) { if (getStatus()) { SheetIndexStatusSwitch(sdkD, true) } + // 雨雪雾夜视星空光照 + let stages = sdk.viewer.scene.postProcessStages._stages + for (let i = 0; i < stages.length; i++) { + switch (stages[i].name) { + case 'rain': + rain(sdkD, true) + break + case 'snow': + snow(sdkD, true) + break + case 'fog': + fog(sdkD, true) + break + case 'czm_night_vision': + nightVision(sdkD, true) + break + } + } + skyStarry(sdkD, !sdk.viewer.scene.skyAtmosphere.show) + illumination(sdkD, sdk.viewer.shadows) function changeEntitySplitStatus(v) { let value diff --git a/src/Global/efflect/index.js b/src/Global/efflect/index.js index 1127e95..37de28c 100644 --- a/src/Global/efflect/index.js +++ b/src/Global/efflect/index.js @@ -87,7 +87,13 @@ const FS_Fog = ` /*雨天*/ function rain(sdk, status = false) { - rainStages && sdk.viewer.scene.postProcessStages.remove(rainStages) + let stages = sdk.viewer.scene.postProcessStages._stages + for (let i = 0; i < stages.length; i++) { + if (stages[i].name && stages[i].name === 'rain') { + sdk.viewer.scene.postProcessStages.remove(stages[i]) + break + } + } if (status) { rainStages = new Cesium.PostProcessStage({ name: "rain", @@ -101,11 +107,46 @@ function rain(sdk, status = false) { }); sdk.viewer.scene.postProcessStages.add(rainStages); } + + let { getSdk } = require('../SplitScreen') + let { getSdk: getSdk2 } = require('../MultiViewportMode') + let sdkD = getSdk().sdkD + if(!sdkD) { + sdkD = getSdk2().sdkD + } + if(sdkD && sdk !== sdkD) { + let stages = sdkD.viewer.scene.postProcessStages._stages + for (let i = 0; i < stages.length; i++) { + if (stages[i].name && stages[i].name === 'rain') { + sdkD.viewer.scene.postProcessStages.remove(stages[i]) + break + } + } + if (status) { + rainStages = new Cesium.PostProcessStage({ + name: "rain", + fragmentShader: FS_Rain, + uniforms: { + tiltAngle: -0.4, // 倾斜角度 + rainSize: 0.3, // 雨大小 + rainWidth: 40, //雨长度 + rainSpeed: 100, //雨速 + }, + }); + sdkD.viewer.scene.postProcessStages.add(rainStages); + } + } } // 雪 function snow(sdk, status = false) { - snowStages && sdk.viewer.scene.postProcessStages.remove(snowStages) + let stages = sdk.viewer.scene.postProcessStages._stages + for (let i = 0; i < stages.length; i++) { + if (stages[i].name && stages[i].name === 'snow') { + sdk.viewer.scene.postProcessStages.remove(stages[i]) + break + } + } if (status) { snowStages = new Cesium.PostProcessStage({ name: "snow", @@ -117,11 +158,44 @@ function snow(sdk, status = false) { }); sdk.viewer.scene.postProcessStages.add(snowStages); } + + let { getSdk } = require('../SplitScreen') + let { getSdk: getSdk2 } = require('../MultiViewportMode') + let sdkD = getSdk().sdkD + if(!sdkD) { + sdkD = getSdk2().sdkD + } + if(sdkD && sdk !== sdkD) { + let stages = sdkD.viewer.scene.postProcessStages._stages + for (let i = 0; i < stages.length; i++) { + if (stages[i].name && stages[i].name === 'snow') { + sdkD.viewer.scene.postProcessStages.remove(stages[i]) + break + } + } + if (status) { + snowStages = new Cesium.PostProcessStage({ + name: "snow", + fragmentShader: FS_Snow, + uniforms: { + snowSize: 2, // 大小 + snowSpeed: 60, //速度 + }, + }); + sdkD.viewer.scene.postProcessStages.add(snowStages); + } + } } // 雾天 function fog(sdk, status = false) { - fogStages && sdk.viewer.scene.postProcessStages.remove(fogStages) + let stages = sdk.viewer.scene.postProcessStages._stages + for (let i = 0; i < stages.length; i++) { + if (stages[i].name && stages[i].name === 'fog') { + sdk.viewer.scene.postProcessStages.remove(stages[i]) + break + } + } if (status) { fogStages = new Cesium.PostProcessStage({ name: "fog", @@ -133,26 +207,90 @@ function fog(sdk, status = false) { }); sdk.viewer.scene.postProcessStages.add(fogStages); } + + let { getSdk } = require('../SplitScreen') + let { getSdk: getSdk2 } = require('../MultiViewportMode') + let sdkD = getSdk().sdkD + if(!sdkD) { + sdkD = getSdk2().sdkD + } + if(sdkD && sdk !== sdkD) { + let stages = sdkD.viewer.scene.postProcessStages._stages + for (let i = 0; i < stages.length; i++) { + if (stages[i].name && stages[i].name === 'fog') { + sdkD.viewer.scene.postProcessStages.remove(stages[i]) + break + } + } + if (status) { + fogStages = new Cesium.PostProcessStage({ + name: "fog", + fragmentShader: FS_Fog, + uniforms: { + visibility: 0.2, // + fogColor: Cesium.Color.WHITE, + }, + }); + sdkD.viewer.scene.postProcessStages.add(fogStages); + } + } } // 夜视 function nightVision(sdk, status = false) { - nightVisionStages && sdk.viewer.scene.postProcessStages.remove(nightVisionStages) + let stages = sdk.viewer.scene.postProcessStages._stages + for (let i = 0; i < stages.length; i++) { + if (stages[i].name && stages[i].name === 'czm_night_vision') { + sdk.viewer.scene.postProcessStages.remove(stages[i]) + break + } + } if (status) { nightVisionStages = Cesium.PostProcessStageLibrary.createNightVisionStage(); sdk.viewer.scene.postProcessStages.add(nightVisionStages); } + + let { getSdk } = require('../SplitScreen') + let { getSdk: getSdk2 } = require('../MultiViewportMode') + let sdkD = getSdk().sdkD + if(!sdkD) { + sdkD = getSdk2().sdkD + } + if(sdkD && sdk !== sdkD) { + let stages = sdkD.viewer.scene.postProcessStages._stages + for (let i = 0; i < stages.length; i++) { + if (stages[i].name && stages[i].name === 'czm_night_vision') { + sdkD.viewer.scene.postProcessStages.remove(stages[i]) + break + } + } + if (status) { + nightVisionStages = Cesium.PostProcessStageLibrary.createNightVisionStage(); + sdkD.viewer.scene.postProcessStages.add(nightVisionStages); + } + } } // 星空 function skyStarry(sdk, status = false) { sdk.viewer.scene.skyAtmosphere.show = !status + let { getSdk } = require('../SplitScreen') + let sdkD = getSdk().sdkD + if(sdkD && sdk !== sdkD) { + sdkD.viewer.scene.skyAtmosphere.show = !status + } } // 光照 function illumination(sdk, status = false) { sdk.viewer.shadows = status sdk.viewer._shadows = status + let { getSdk } = require('../SplitScreen') + let sdkD = getSdk().sdkD + if(sdkD && sdk !== sdkD) { + sdkD.viewer.shadows = status + sdkD.viewer._shadows = status + } } diff --git a/src/Obj/Analysis/TerrainExcavation/index.js b/src/Obj/Analysis/TerrainExcavation/index.js index 802b31d..06e485c 100644 --- a/src/Obj/Analysis/TerrainExcavation/index.js +++ b/src/Obj/Analysis/TerrainExcavation/index.js @@ -154,7 +154,9 @@ class TerrainExcavation extends Tools { startCreate() { this.Draw.start((e, positions) => { if (!positions || positions.length <= 2) { - this.tools.message({ type: 'warning', text: '至少拥有三个坐标位置!' }) + if(!e && e!=0) { + this.tools.message({ type: 'warning', text: '至少拥有三个坐标位置!' }) + } return } if (!this.isConvex(positions)) { diff --git a/src/Obj/Base/AssembleObject/index.js b/src/Obj/Base/AssembleObject/index.js index d4c3793..81e71a0 100644 --- a/src/Obj/Base/AssembleObject/index.js +++ b/src/Obj/Base/AssembleObject/index.js @@ -1179,6 +1179,9 @@ class AssembleObject extends Base { YJ.Measure.SetMeasureStatus(false) this.event && this.event.destroy() this.tip && this.tip.destroy() + + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } async remove() { diff --git a/src/Obj/Base/BaseSource/BaseModel/Model/index.js b/src/Obj/Base/BaseSource/BaseModel/Model/index.js index 28ff622..b1c8312 100644 --- a/src/Obj/Base/BaseSource/BaseModel/Model/index.js +++ b/src/Obj/Base/BaseSource/BaseModel/Model/index.js @@ -1714,6 +1714,8 @@ class Model extends BaseModel { this.attributeISC = this.options.attribute.ISC.content this.cameraSelect && this.cameraSelect() this.goodsSelect && this.goodsSelect() + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } catch (error) { } diff --git a/src/Obj/Base/BillboardObject/index.js b/src/Obj/Base/BillboardObject/index.js index eec5f58..e561dc0 100644 --- a/src/Obj/Base/BillboardObject/index.js +++ b/src/Obj/Base/BillboardObject/index.js @@ -2338,6 +2338,8 @@ class BillboardObject extends Base { this.attributeISC = this.options.attribute.isc.content this.cameraSelect && this.cameraSelect() this.goodsSelect && this.goodsSelect() + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } async remove() { diff --git a/src/Obj/Base/CircleDiffuse/index.js b/src/Obj/Base/CircleDiffuse/index.js index caff543..7fb0239 100644 --- a/src/Obj/Base/CircleDiffuse/index.js +++ b/src/Obj/Base/CircleDiffuse/index.js @@ -175,6 +175,8 @@ class CircleDiffuse extends Base { zIndex: zIndex } }) + syncData(that.sdk, that.options.id) + syncSplitData(that.sdk, that.options.id) } else { that.entity = that.sdk.viewer.entities.add({ diff --git a/src/Obj/Base/CircleObject/index.js b/src/Obj/Base/CircleObject/index.js index 655a7d2..73b581e 100644 --- a/src/Obj/Base/CircleObject/index.js +++ b/src/Obj/Base/CircleObject/index.js @@ -1163,6 +1163,8 @@ class CircleObject extends Base { YJ.Measure.SetMeasureStatus(false) this.event && this.event.destroy() this.tip && this.tip.destroy() + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } async remove() { diff --git a/src/Obj/Base/CurvelineObject/index.js b/src/Obj/Base/CurvelineObject/index.js index 998d0fc..4ba32ec 100644 --- a/src/Obj/Base/CurvelineObject/index.js +++ b/src/Obj/Base/CurvelineObject/index.js @@ -2240,6 +2240,9 @@ class CurvelineObject extends Base { this.heightMode = this.options.heightMode + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) + // let height // if (this.ground) { // height = await that.getClampToHeight({ diff --git a/src/Obj/Base/EllipseObject/index.js b/src/Obj/Base/EllipseObject/index.js index 7fabb45..7850939 100644 --- a/src/Obj/Base/EllipseObject/index.js +++ b/src/Obj/Base/EllipseObject/index.js @@ -1167,6 +1167,8 @@ class EllipseObject extends Base { YJ.Measure.SetMeasureStatus(false) this.event && this.event.destroy() this.tip && this.tip.destroy() + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } async remove() { diff --git a/src/Obj/Base/Explosion/index.js b/src/Obj/Base/Explosion/index.js index 1875fa7..2d86ba1 100644 --- a/src/Obj/Base/Explosion/index.js +++ b/src/Obj/Base/Explosion/index.js @@ -219,6 +219,8 @@ class Explosion extends Base { this.scaleByDistance = this.originalOptions.scaleByDistance this.lng = this.options.position.lng this.lat = this.options.position.lat + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } get scaleByDistance() { diff --git a/src/Obj/Base/FlowLine/index.js b/src/Obj/Base/FlowLine/index.js index 3ecd0e9..f40af46 100644 --- a/src/Obj/Base/FlowLine/index.js +++ b/src/Obj/Base/FlowLine/index.js @@ -379,6 +379,8 @@ class FlowLine extends Base { this.duration = this.originalOptions.duration this.color = this.originalOptions.color this.lineBackAlpha = this.originalOptions.lineBackAlpha + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } /** diff --git a/src/Obj/Base/GroundSvg/index.js b/src/Obj/Base/GroundSvg/index.js index 1caf75f..fd530c8 100644 --- a/src/Obj/Base/GroundSvg/index.js +++ b/src/Obj/Base/GroundSvg/index.js @@ -1234,6 +1234,8 @@ class GroundSvg extends Base { this.textScaleByDistance = this.originalOptions.text.scaleByDistance this.textNear = this.originalOptions.text.near this.textFar = this.originalOptions.text.far + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } /** diff --git a/src/Obj/Base/ParticleEffects/Flame/index.js b/src/Obj/Base/ParticleEffects/Flame/index.js index a799395..386425e 100644 --- a/src/Obj/Base/ParticleEffects/Flame/index.js +++ b/src/Obj/Base/ParticleEffects/Flame/index.js @@ -585,6 +585,8 @@ class Flame extends Base { this.lng = this.originalOptions.lng this.lat = this.originalOptions.lat this.alt = this.originalOptions.alt + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) // syncPrimitives(this.entity) } @@ -599,7 +601,10 @@ class Flame extends Base { this.tip && this.tip.destroy() this.event && this.event.destroy() await this.sdk.removeIncetance(this.options.id) - await syncData(this.sdk, this.options.id) + let sdkD = get2DSdk().sdkD + if(this.sdk !== sdkD) { + await syncData(this.sdk, this.options.id) + } } /**@desc 打开平移功能 diff --git a/src/Obj/Base/ParticleEffects/Fountain/index.js b/src/Obj/Base/ParticleEffects/Fountain/index.js index c074b1f..5d428fe 100644 --- a/src/Obj/Base/ParticleEffects/Fountain/index.js +++ b/src/Obj/Base/ParticleEffects/Fountain/index.js @@ -606,6 +606,8 @@ class Fountain extends Base { this.lng = this.originalOptions.lng this.lat = this.originalOptions.lat this.alt = this.originalOptions.alt + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } async remove() { @@ -619,7 +621,10 @@ class Fountain extends Base { this.tip && this.tip.destroy() this.event && this.event.destroy() await this.sdk.removeIncetance(this.options.id) - await syncData(this.sdk, this.options.id) + let sdkD = get2DSdk().sdkD + if(this.sdk !== sdkD) { + await syncData(this.sdk, this.options.id) + } } /**@desc 打开平移功能 diff --git a/src/Obj/Base/ParticleEffects/Smoke/index.js b/src/Obj/Base/ParticleEffects/Smoke/index.js index 76b18d2..ca2d8f6 100644 --- a/src/Obj/Base/ParticleEffects/Smoke/index.js +++ b/src/Obj/Base/ParticleEffects/Smoke/index.js @@ -581,6 +581,8 @@ class Smoke extends Base { this.lng = this.originalOptions.lng this.lat = this.originalOptions.lat this.alt = this.originalOptions.alt + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } async remove() { @@ -594,7 +596,10 @@ class Smoke extends Base { this.tip && this.tip.destroy() this.event && this.event.destroy() await this.sdk.removeIncetance(this.options.id) - await syncData(this.sdk, this.options.id) + let sdkD = get2DSdk().sdkD + if(this.sdk !== sdkD) { + await syncData(this.sdk, this.options.id) + } } /**@desc 打开平移功能 diff --git a/src/Obj/Base/ParticleEffects/Spout/index.js b/src/Obj/Base/ParticleEffects/Spout/index.js index 371545c..05f9f41 100644 --- a/src/Obj/Base/ParticleEffects/Spout/index.js +++ b/src/Obj/Base/ParticleEffects/Spout/index.js @@ -718,6 +718,8 @@ class Spout extends Base { this.lng = this.originalOptions.start.lng this.lat = this.originalOptions.start.lat this.alt = this.originalOptions.start.alt + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } async remove() { @@ -731,7 +733,10 @@ class Spout extends Base { this.tip && this.tip.destroy() this.event && this.event.destroy() await this.sdk.removeIncetance(this.options.id) - await syncData(this.sdk, this.options.id) + let sdkD = get2DSdk().sdkD + if(this.sdk !== sdkD) { + await syncData(this.sdk, this.options.id) + } } /**@desc 打开平移功能 diff --git a/src/Obj/Base/PolygonObject/index.js b/src/Obj/Base/PolygonObject/index.js index 99938af..9817b2e 100644 --- a/src/Obj/Base/PolygonObject/index.js +++ b/src/Obj/Base/PolygonObject/index.js @@ -1295,6 +1295,8 @@ class PolygonObject extends Base { this.positions[0], this.positions[1] ] + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } /** @@ -1858,6 +1860,21 @@ class PolygonObject extends Base { } } let rightEvent = (movement, cartesian) => { + this.closeNodeEdit = () => { + if (!this.sdk || !this.sdk.viewer) { + return + } + YJ.Measure.SetMeasureStatus(false) + this.event && this.event.destroy() + this.tip && this.tip.destroy() + this.tip = null + + for (let i = 0; i < this.nodePoints.length; i++) { + this.sdk.viewer.entities.remove(this.nodePoints[i]) + } + this.nodePoints = [] + this.picking = true + } if (selectPoint) { this.options.positions[selectPoint.index] = originalPosition // this.options.positions.splice(selectPoint.index, 1) @@ -1918,6 +1935,8 @@ class PolygonObject extends Base { this.heightMode = this.heightMode } + this.closeNodeEdit = rightEvent + this.entity.polyline.clampToGround = true this.entity.polyline.arcType = Cesium.ArcType.GEODESIC @@ -1968,17 +1987,17 @@ class PolygonObject extends Base { let centroid = turf.centroid(polygon) setTimeout(() => { this - .getClampToHeight({ - lng: centroid.geometry.coordinates[0], - lat: centroid.geometry.coordinates[1] - }, objectsToExclude) - .then(height => { - this.label.position = [ - centroid.geometry.coordinates[0], - centroid.geometry.coordinates[1], - height - ] - }) + .getClampToHeight({ + lng: centroid.geometry.coordinates[0], + lat: centroid.geometry.coordinates[1] + }, objectsToExclude) + .then(height => { + this.label.position = [ + centroid.geometry.coordinates[0], + centroid.geometry.coordinates[1], + height + ] + }) }, 200); } @@ -2066,7 +2085,7 @@ class PolygonObject extends Base { } } this.nodePoints.pop() - if(this.options.positions.length < 3) { + if (this.options.positions.length < 3) { this.tip.set_text('左键单击确定控制点位置,右键单击取消编辑! CTRL+右键单击撤销上一个控制点') } } diff --git a/src/Obj/Base/PolyhedronObject/index.js b/src/Obj/Base/PolyhedronObject/index.js index 8a3305e..fa72aa8 100644 --- a/src/Obj/Base/PolyhedronObject/index.js +++ b/src/Obj/Base/PolyhedronObject/index.js @@ -1027,6 +1027,8 @@ class PolyhedronObject extends Base { let centroid = turf.pointOnFeature(polygon); let height = await this.getClampToHeight({ lng: centroid.geometry.coordinates[0], lat: centroid.geometry.coordinates[1] }) this.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], this.extrudedHeight + this.height] + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } async remove() { diff --git a/src/Obj/Base/PolylineObject/index.js b/src/Obj/Base/PolylineObject/index.js index 0e0cdc5..44d721f 100644 --- a/src/Obj/Base/PolylineObject/index.js +++ b/src/Obj/Base/PolylineObject/index.js @@ -2251,6 +2251,9 @@ class PolylineObject extends Base { this.heightMode = this.options.heightMode + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) + // let height // if (this.ground) { // height = await that.getClampToHeight({ diff --git a/src/Obj/Base/RadarScan/index.js b/src/Obj/Base/RadarScan/index.js index 520e691..13b1f6e 100644 --- a/src/Obj/Base/RadarScan/index.js +++ b/src/Obj/Base/RadarScan/index.js @@ -1061,6 +1061,8 @@ class RadarScan extends Base { this.labelLineColor = this.originalOptions.label.lineColor this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0] this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1] + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } async remove() { diff --git a/src/Obj/Base/RadarScanStereoscopic/index.js b/src/Obj/Base/RadarScanStereoscopic/index.js index d731a24..28a368c 100644 --- a/src/Obj/Base/RadarScanStereoscopic/index.js +++ b/src/Obj/Base/RadarScanStereoscopic/index.js @@ -1045,6 +1045,8 @@ class RadarScanStereoscopic extends Base { this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0] this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1] this.positionEditing = false + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } async remove() { diff --git a/src/Obj/Base/SectorObject/index.js b/src/Obj/Base/SectorObject/index.js index 0b11062..4def144 100644 --- a/src/Obj/Base/SectorObject/index.js +++ b/src/Obj/Base/SectorObject/index.js @@ -1174,6 +1174,8 @@ class SectorObject extends Base { YJ.Measure.SetMeasureStatus(false) this.event && this.event.destroy() this.tip && this.tip.destroy() + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } async remove() { diff --git a/src/Obj/Base/TextObject/GroundText/index.js b/src/Obj/Base/TextObject/GroundText/index.js index 76f14cf..097ad19 100644 --- a/src/Obj/Base/TextObject/GroundText/index.js +++ b/src/Obj/Base/TextObject/GroundText/index.js @@ -634,6 +634,8 @@ class GroundText extends Base { this.angle = this.originalOptions.angle this.scale = this.originalOptions.scale this.color = this.originalOptions.color + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } async remove() { diff --git a/src/Obj/Base/TextObject/StandText/index.js b/src/Obj/Base/TextObject/StandText/index.js index cc01fd2..f34c604 100644 --- a/src/Obj/Base/TextObject/StandText/index.js +++ b/src/Obj/Base/TextObject/StandText/index.js @@ -452,6 +452,8 @@ class StandText extends Base { maximumHeights.push(positions[i].alt + extrudedHeight) } this.entity.wall.positions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray) + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } async remove() { diff --git a/src/Obj/Base/TrajectoryMotion/index.js b/src/Obj/Base/TrajectoryMotion/index.js index 7958904..9363258 100644 --- a/src/Obj/Base/TrajectoryMotion/index.js +++ b/src/Obj/Base/TrajectoryMotion/index.js @@ -2276,6 +2276,8 @@ class TrajectoryMotion extends Base { this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0] this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1] this.options = this.deepCopyObj(this.originalOptions); + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } // viewFollow(e) { diff --git a/src/Obj/Base/TrajectoryMotionObject/index.js b/src/Obj/Base/TrajectoryMotionObject/index.js index 0c4df72..144038e 100644 --- a/src/Obj/Base/TrajectoryMotionObject/index.js +++ b/src/Obj/Base/TrajectoryMotionObject/index.js @@ -143,6 +143,7 @@ class TrajectoryMotionObject extends Base { } } let positions_smooth = this._renewLine(this.options.line.positions) + this.line.polyline.positions = positions_smooth this._elms.height && this._elms.height.forEach((item) => { item.value = v }) @@ -210,6 +211,7 @@ class TrajectoryMotionObject extends Base { this.lineEdit = false this.options.line.smooth = v let positions = this._renewLine(this.options.line.positions) + this.line.polyline.positions = positions this.modelMove(positions) this._elms.smooth && this._elms.smooth.forEach((item) => { item.checked = v @@ -271,6 +273,7 @@ class TrajectoryMotionObject extends Base { let nosmooth = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArrayHeights) if (this.line) { let positions_smooth = this._renewLine(this.options.line.positions) + this.line.polyline.positions = positions_smooth this.modelMove(positions_smooth) } this._elms.noseToTail && this._elms.noseToTail.forEach((item) => { diff --git a/src/Obj/Base/WallRealStereoscopic/index.js b/src/Obj/Base/WallRealStereoscopic/index.js index 48f1018..3c07c78 100644 --- a/src/Obj/Base/WallRealStereoscopic/index.js +++ b/src/Obj/Base/WallRealStereoscopic/index.js @@ -1274,15 +1274,8 @@ class WallRealStereoscopic extends Base { this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0] this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1] - let positions = this.options.positions - let fromDegreesArray = [] - let minimumHeights = [] - let maximumHeights = [] - for (let i = 0; i < positions.length; i++) { - fromDegreesArray.push(positions[i].lng, positions[i].lat, positions[i].alt) - minimumHeights.push(positions[i].alt) - maximumHeights.push(positions[i].alt + this.options.extrudedHeight) - } + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) // this.entity.polylineVolume.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray) } @@ -1469,6 +1462,7 @@ class WallRealStereoscopic extends Base { } } let rightEvent = (movement, cartesian) => { + that.closeNodeEdit = ()=>{} if (selectPoint) { that.options.positions[selectPoint.index] = originalPosition if (isAdd) { @@ -1489,6 +1483,7 @@ class WallRealStereoscopic extends Base { that.tip.destroy() that.material = that.material } + that.closeNodeEdit = rightEvent function update(isCallback = false) { if (that.entity) { @@ -1632,6 +1627,8 @@ class WallRealStereoscopic extends Base { } } + closeNodeEdit() {} + update() { if (this.entity) { let positions = this.calculatePositions() diff --git a/src/Obj/Base/WallStereoscopic/index.js b/src/Obj/Base/WallStereoscopic/index.js index dcdbe9c..a2c948c 100644 --- a/src/Obj/Base/WallStereoscopic/index.js +++ b/src/Obj/Base/WallStereoscopic/index.js @@ -803,6 +803,15 @@ class WallStereoscopic extends Base { item.checked = this.noseToTail }) + for (let i = 0; i < this.nodePoints.length; i++) { + this.sdk.viewer.entities.remove(this.nodePoints[i]) + } + this.nodePoints = [] + YJ.Measure.SetMeasureStatus(false) + this.event && this.event.destroy() + this.event && this.tip.destroy() + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } async remove() { @@ -995,6 +1004,7 @@ class WallStereoscopic extends Base { } } let rightEvent = (movement, cartesian) => { + that.closeNodeEdit = ()=>{} if (selectPoint) { that.options.positions[selectPoint.index] = originalPosition if (isAdd) { @@ -1023,6 +1033,8 @@ class WallStereoscopic extends Base { that.material = that.material } + that.closeNodeEdit = rightEvent + that.event.mouse_left(leftEvent) that.event.mouse_right(rightEvent) @@ -1109,6 +1121,8 @@ class WallStereoscopic extends Base { } } + closeNodeEdit() {} + setDIV(options = { domid: "", x: 10, y: 10 }) { options.x = (options.x || options.x === 0) ? options.x : 10 options.y = (options.y || options.y === 0) ? options.y : 10 diff --git a/src/Obj/Base/WaterSurface/index.js b/src/Obj/Base/WaterSurface/index.js index e951886..530e64a 100644 --- a/src/Obj/Base/WaterSurface/index.js +++ b/src/Obj/Base/WaterSurface/index.js @@ -276,6 +276,8 @@ class WaterSurface extends Base { this.animationSpeed = this.originalOptions.animationSpeed this.amplitude = this.originalOptions.amplitude this.height = this.originalOptions.height + syncData(this.sdk, this.options.id) + syncSplitData(this.sdk, this.options.id) } /**