diff --git a/src/Global/MultiViewportMode/ClickCallback/index.js b/src/Global/MultiViewportMode/ClickCallback/index.js new file mode 100644 index 0000000..cc940af --- /dev/null +++ b/src/Global/MultiViewportMode/ClickCallback/index.js @@ -0,0 +1,578 @@ +/** + * @name: click + * @author: Administrator + * @date: 2023-05-28 11:05 + * @description:click + * @update: 2023-05-28 11:05 + */ +let leftClickHandler = null +let rightClickHandler = null +let MoveHandler = null +let leftClickCallbackMap = new Map() +let rightClickCallbackMap = new Map() +let MoveCallbackMap = new Map() +let selectedFeature; + + +function cartesian3Towgs84(cartesian, viewer) { + var ellipsoid = viewer.scene.globe.ellipsoid + var cartesian3 = new Cesium.Cartesian3( + cartesian.x, + cartesian.y, + cartesian.z + ) + var cartographic = ellipsoid.cartesianToCartographic(cartesian3) + var lat = Cesium.Math.toDegrees(cartographic.latitude) + var lng = Cesium.Math.toDegrees(cartographic.longitude) + var alt = cartographic.height < 0 ? 0 : cartographic.height + return { + lng: lng, + lat: lat, + alt: alt, + } +} + +function getcartesian(sdk, movement) { + if (movement.endPosition) { + movement.endPosition.y -= 2 + } + let position = movement.position || movement.endPosition + // 获取世界坐标系地表坐标,考虑地形,不包括模型,倾斜摄影模型表面; + let cartesian = sdk.viewer.scene.pickPosition(position) + if (!cartesian) { + const ray = sdk.viewer.camera.getPickRay(position); //相交的射线 + cartesian = sdk.viewer.scene.globe.pick(ray, sdk.viewer.scene); + } + return cartesian +} + +function openLeftClick(sdk, cb) { + if (!sdk || !sdk.viewer) { + return + } + let click = true + leftClickHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas) + leftClickHandler.setInputAction((movement) => { + let cartesian = sdk.viewer.scene.pickPosition(movement.position) + if (!cartesian) { + const ray = sdk.viewer.camera.getPickRay(movement.position); //相交的射线 + cartesian = sdk.viewer.scene.globe.pick(ray, sdk.viewer.scene); + } + if (!cartesian) { + return + } + + let pos84 = cartesian3Towgs84(cartesian, sdk.viewer) + + cb && cb(pos84) + + if (click) { + click = false + setTimeout(() => { + click = true + }, 600); + if (!YJ.Measure.GetMeasureStatus() && cartesian) { + let flag = false + for (let i = leftClickCallbackMap.size - 1; i >= 0; i--) { + let key = Array.from(leftClickCallbackMap.keys())[i] + let obj = leftClickCallbackMap.get(key) + if (obj) { + + if (obj.that) { + // 是否为多边形 + if (obj.that.type === 'PolygonObject') { + // 是否可点击y + if (obj.that.picking) { + if (obj.that.options.positions && obj.that.options.positions.length >= 3) { + let pt = turf.point([pos84.lng, pos84.lat]); + let polyPos = [] + for (let i = 0; i < obj.that.options.positions.length; i++) { + polyPos.push([ + obj.that.options.positions[i].lng, + obj.that.options.positions[i].lat + ]) + } + polyPos.push([ + obj.that.options.positions[0].lng, + obj.that.options.positions[0].lat + ]) + let poly = turf.polygon([polyPos]); + let contain = turf.booleanPointInPolygon(pt, poly); + if (contain) { + obj.callback( + movement, + obj.that.options.id, + cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that) + flag = true + break + } + } + } + } + // 聚集地 + else if (obj.that.type === 'AssembleObject') { + if (obj.that.picking) { + if (obj.that.options.positions && obj.that.options.positions.length >= 3) { + let positions = obj.that.computeAssemble(obj.that.options.positions, true) + let pt = turf.point([pos84.lng, pos84.lat]); + let polyPos = [] + for (let i = 0; i < positions.length; i += 2) { + polyPos.push([ + positions[i], + positions[i + 1] + ]) + } + let poly = turf.polygon([polyPos]); + let contain = turf.booleanPointInPolygon(pt, poly); + if (contain) { + obj.callback( + movement, + obj.that.options.id, + cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that) + flag = true + break + } + } + } + } + // 单箭头 + else if (obj.that.type === 'AttackArrowObject') { + if (obj.that.picking) { + if (obj.that.options.positions && obj.that.options.positions.length >= 3) { + let pt = turf.point([pos84.lng, pos84.lat]); + let positions = obj.that.computeAttackArrow(obj.that.options.positions) + let polyPos = [] + for (let m = 0; m < positions.length; m++) { + let pos84 = cartesian3Towgs84(positions[m], sdk.viewer) + polyPos.push([pos84.lng, pos84.lat]) + } + let poly = turf.polygon([polyPos]); + let contain = turf.booleanPointInPolygon(pt, poly); + if (contain) { + obj.callback( + movement, + obj.that.options.id, + cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that) + flag = true + break + } + } + } + } + // 双箭头 + else if (obj.that.type === 'PincerArrowObject') { + if (obj.that.picking) { + if (obj.that.options.positions && obj.that.options.positions.length >= 5) { + let pt = turf.point([pos84.lng, pos84.lat]); + let positions = obj.that.computePincerArrow(obj.that.options.positions) + let polyPos = [] + for (let m = 0; m < positions.length; m++) { + let pos84 = cartesian3Towgs84(positions[m], sdk.viewer) + polyPos.push([pos84.lng, pos84.lat]) + } + let pos84_0 = cartesian3Towgs84(positions[0], sdk.viewer) + polyPos.push([pos84_0.lng, pos84_0.lat]) + let poly = turf.polygon([polyPos]); + let contain = turf.booleanPointInPolygon(pt, poly); + if (contain) { + obj.callback( + movement, + obj.that.options.id, + cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that) + flag = true + break + } + } + } + } + // 圆 + else if (obj.that.type === 'CircleObject') { + if (obj.that.picking) { + let pt = turf.point([pos84.lng, pos84.lat]); + if (obj.that.options.center && obj.that.options.radius) { + let center = [obj.that.options.center.lng, obj.that.options.center.lat]; + let radius = obj.that.options.radius / 1000; + let options = { steps: 360, units: 'kilometers' }; + let circle = turf.circle(center, radius, options); + let contain = turf.booleanPointInPolygon(pt, circle); + if (contain) { + obj.callback( + movement, + obj.that.options.id, + cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that) + flag = true + break + } + } + + } + } + // 扇形 + else if (obj.that.type === 'SectorObject') { + if (obj.that.picking) { + let pt = turf.point([pos84.lng, pos84.lat]); + if (obj.that.options.center && obj.that.options.radius && obj.that.options.startAngle && obj.that.options.endAngle) { + let positions = obj.that.calSector(obj.that.options.center, obj.that.options.radius, obj.that.options.startAngle, obj.that.options.endAngle, undefined, true) + let polyPos = [] + for (let m = 0; m < positions.length; m++) { + polyPos.push([positions[m].lng, positions[m].lat]) + } + let poly = turf.polygon([polyPos]); + let contain = turf.booleanPointInPolygon(pt, poly); + if (contain) { + obj.callback( + movement, + obj.that.options.id, + cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that) + flag = true + break + } + } + + } + } + } + } + } + if (!flag) { + const pick = sdk.viewer.scene.pick(movement.position) + if (pick) { + if (pick.id) { + let entityId + // 矢量 + 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) { + for (let i = 0; i < obj.that.geojson.features.length; i++) { + if (obj.that.geojson.features[i].id === pick.id._id) { + obj.callback( + movement, + obj.that.geojson.features[i].id, + cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that) + } + } + } + } + else if (typeof pick.id.id == 'string') { + let array = pick.id.id.split('-') + array.splice(array.length - 1, 1) + entityId = array.join('-') + } + + 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) { + obj.callback( + movement, + pick.id.properties.id._value, + cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that) + } + } + else if (leftClickCallbackMap.has(pick.id.id)) { + let obj = leftClickCallbackMap.get(pick.id.id) + if (obj.that.picking) { + obj.callback( + movement, + pick.id.id, + cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that) + } + } + else if (entityId && leftClickCallbackMap.has(entityId)) { + let obj = leftClickCallbackMap.get(entityId) + if (obj.that.picking) { + obj.callback( + movement, + entityId, + cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that) + } + } + 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) + } + } + } + else { + 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.that.type === 'bim') { + if (YJ.Global.getBimPickStatus(sdk)) { + obj.callback( + movement, + pick.primitive, + cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that) + } + } + else { + obj.callback( + movement, + pick.primitive.id, + cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that) + } + } + } + } + } + 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.that.type === 'bim') { + if (YJ.Global.getBimPickStatus(sdk)) { + obj.callback( + movement, + pick.content.tileset, + cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that) + } + } + else { + obj.callback( + movement, + pick.content.tileset.id, + cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that) + } + } + } + } + } + } + } + } + + + // if (click) { + // click = false + // setTimeout(() => { + // click = true + // }, 300); + // if (!YJ.Measure.GetMeasureStatus()) { + + // } + // } + }, Cesium.ScreenSpaceEventType.LEFT_CLICK) + + // leftClickHandler.setInputAction(function (movement) { + // const feature = sdk.viewer.scene.pick(movement.endPosition); + // // unselectFeature(selectedFeature); + // if (selectedFeature) { + // selectedFeature.color = Cesium.Color.WHITE; + // } + // selectedFeature = feature + // if (feature) { + // feature.color = Cesium.Color.YELLOW; + // } + // }, Cesium.ScreenSpaceEventType.MOUSE_MOVE); + // } + +} + +function closeLeftClick(sdk) { + leftClickHandler.destroy() //关闭事件句柄 + leftClickHandler = null + // } +} + +function openRightClick(sdk) { + if (!sdk || !sdk.viewer) { + return + } + rightClickHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas) + rightClickHandler.setInputAction((movement) => { + if (!YJ.Measure.GetMeasureStatus()) { + const pick = sdk.viewer.scene.pick(movement.position) + if (pick && pick.id) { + 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) { + for (let i = 0; i < obj.that.geojson.features.length; i++) { + if (obj.that.geojson.features[i].id === pick.id._id) { + obj.callback( + movement, + obj.that.geojson.features[i].id, + cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that) + } + } + } + } + else { + if (typeof pick.id === 'string') { + id = pick.id + } + else { + id = pick.id.id + } + if (rightClickCallbackMap.has(id)) { + let obj = rightClickCallbackMap.get(id) + if (obj.that.picking) { + let cartesian = getcartesian(sdk, movement) + if (!cartesian) { + return + } + obj.callback( + movement, + id, + cartesian3Towgs84(cartesian, sdk.viewer), obj.that) + } + } + } + } + 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.that.type === 'bim') { + if (YJ.Global.getBimPickStatus(sdk)) { + let cartesian = getcartesian(sdk, movement) + if (!cartesian) { + return + } + obj.callback( + movement, + pick.getProperty('id'), + cartesian3Towgs84(cartesian, sdk.viewer), obj.that) + } + } + else { + let cartesian = getcartesian(sdk, movement) + if (!cartesian) { + return + } + obj.callback( + movement, + pick.content.tileset.id, + cartesian3Towgs84(cartesian, sdk.viewer), obj.that) + } + } + } + } + } + }, Cesium.ScreenSpaceEventType.RIGHT_CLICK) +} + +function closeRightClick() { + if (rightClickHandler) { + rightClickHandler.destroy() //关闭事件句柄 + rightClickHandler = null + } +} + +function openMove(sdk) { + MoveHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas) + MoveHandler.setInputAction(function (movement) { + const pick = sdk.viewer.scene.pick(movement.endPosition); + // unselectFeature(selectedFeature); + // if (selectedFeature) { + // let color = '#fff' + // let state = selectedFeature.getProperty('state') + // switch (state) { + // case '0': + // color = '#fff' + // break; + // case '1': + // color = '#f00' + // break; + // case '2': + // color = '#0f0' + // break; + // case '3': + // color = '#00f' + // break; + // default: + // } + // selectedFeature.color = Cesium.Color.fromCssColorString(color).withAlpha(selectedFeature.tileset.transparency) + // } + // if (pick && pick.id) { } + // if (pick && pick.content) { + // if (MoveCallbackMap.has(pick.content.tileset.id)) { + // let obj = MoveCallbackMap.get(pick.content.tileset.id) + // if (obj.that.picking) { + // if (obj.that.type === 'bim') { + // if (YJ.Global.getBimPickStatus(sdk)) { + // selectedFeature = pick + // pick.color = Cesium.Color.YELLOW; + // } + // else { + // selectedFeature = null + // } + // } + // else { + // selectedFeature = pick + // pick.color = Cesium.Color.YELLOW; + // } + // } + // else { + // selectedFeature = null + // } + // } + // } + }, Cesium.ScreenSpaceEventType.MOUSE_MOVE); +} + +function closeMove() { + if (MoveHandler) { + MoveHandler.destroy() //关闭事件句柄 + MoveHandler = null + } +} + +/*注册左键回调*/ +function regLeftClickCallback(id, callback, that) { + + leftClickCallbackMap.set(id, { callback, that }) +}/*取消左键回调*/ +function unRegLeftClickCallback(id,) { + leftClickCallbackMap.delete(id,) +} + +/*注册右键回调*/ +function regRightClickCallback(id, callback, that) { + rightClickCallbackMap.set(id, { callback, that }) +}/*取消右键回调*/ +function unRegRightClickCallback(id,) { + rightClickCallbackMap.delete(id,) +} + +/*注册左键回调*/ +function regMoveCallback(id, callback, that) { + MoveCallbackMap.set(id, { callback, that }) +}/*取消左键回调*/ +function unregMoveCallback(id,) { + MoveCallbackMap.delete(id,) +} + +function getLeftClickState() { + if (leftClickHandler) { + return true + } + else { + false + } +} + +function getRightClickState() { + if (rightClickHandler) { + return true + } + else { + false + } +} + +function getMoveState() { + if (MoveHandler) { + return true + } + else { + false + } +} + + +export { openLeftClick, closeLeftClick, regLeftClickCallback, unRegLeftClickCallback, openRightClick, closeRightClick, regRightClickCallback, unRegRightClickCallback, openMove, closeMove, regMoveCallback, unregMoveCallback, getLeftClickState, getRightClickState, getMoveState } diff --git a/src/Global/MultiViewportMode/index.js b/src/Global/MultiViewportMode/index.js index 9e61089..d9c616d 100644 --- a/src/Global/MultiViewportMode/index.js +++ b/src/Global/MultiViewportMode/index.js @@ -7,6 +7,9 @@ import { CesiumContainer } from '../global' import { off as offSplitScreen } from "../SplitScreen"; import { FlwStatusSwitch, JwwStatusSwitch, getFlwStatus, getJwwStatus } from "../global" import { SheetIndexStatusSwitch, getStatus } from '../SheetIndex' +import { getLeftClickState, getRightClickState, getMoveState } from "../../Global/ClickCallback" +import { openLeftClick, openRightClick, openMove } from "./ClickCallback" + let sdk2D let sdk3D @@ -32,6 +35,16 @@ async function init(sdk) { }) sdk2.viewer.scene.mode = Cesium.SceneMode.SCENE2D sdk2D = await sdk2 + if(getLeftClickState()) { + openLeftClick(sdk2D) + } + if(getRightClickState()) { + openRightClick(sdk2D) + } + if(getMoveState()) { + openMove(sdk2D) + } + // window.sdk2D = sdk2D solveBug() syncObject = { sdks: [sdk, sdk2], tools } diff --git a/src/Obj/Analysis/test2/index.js b/src/Obj/Analysis/test2/index.js index 1cb3415..61fdea9 100644 --- a/src/Obj/Analysis/test2/index.js +++ b/src/Obj/Analysis/test2/index.js @@ -292,7 +292,7 @@ class PolygonObject extends Base { } set labelShow(v) { this.options.label.show = v - if (this.show) { + if (this.show && !this.showView || this.showView == 3) { this.label.show = v } else { diff --git a/src/Obj/Base/AssembleObject/index.js b/src/Obj/Base/AssembleObject/index.js index 3ee6ba0..f682f25 100644 --- a/src/Obj/Base/AssembleObject/index.js +++ b/src/Obj/Base/AssembleObject/index.js @@ -319,7 +319,7 @@ class AssembleObject extends Base { } set labelShow(v) { this.options.label.show = v - if (this.show) { + if (this.show && !this.showView || this.showView == 3) { this.label.show = v } else { diff --git a/src/Obj/Base/AttackArrowObject/index.js b/src/Obj/Base/AttackArrowObject/index.js index ec83033..278e654 100644 --- a/src/Obj/Base/AttackArrowObject/index.js +++ b/src/Obj/Base/AttackArrowObject/index.js @@ -324,7 +324,7 @@ class AttackArrowObject extends Base { } set labelShow(v) { this.options.label.show = v - if (this.show) { + if (this.show && !this.showView || this.showView == 3) { this.label.show = v } else { diff --git a/src/Obj/Base/BaseSource/BaseModel/Model/index.js b/src/Obj/Base/BaseSource/BaseModel/Model/index.js index d4bd9b0..6b24f46 100644 --- a/src/Obj/Base/BaseSource/BaseModel/Model/index.js +++ b/src/Obj/Base/BaseSource/BaseModel/Model/index.js @@ -637,7 +637,7 @@ class Model extends BaseModel { set labelShow(v) { this.options.label.show = v - if (this.show) { + if (this.show && !this.showView || this.showView == 3) { this.label && (this.label.show = v) } else { diff --git a/src/Obj/Base/BillboardObject/index.js b/src/Obj/Base/BillboardObject/index.js index 98f8857..2ff4bc9 100644 --- a/src/Obj/Base/BillboardObject/index.js +++ b/src/Obj/Base/BillboardObject/index.js @@ -224,6 +224,7 @@ class BillboardObject extends Base { this.attributeElm.style.top = (winpos.y + pixelOffset.y - (this.options.label.show ? (this.options.label.fontSize / 2) : -(this.options.label.fontSize / 2)) - this.attributeElm.offsetHeight - this.options.attributePos.y + height).toFixed(0) + 'px' this.attributeElm.style.width = this.options.attributePos.width + 'px' this.attributeElm.style.height = this.options.attributePos.height + 'px' + lineElm.style.zIndex = '-1' if (this.options.attributePos.x < -this.options.attributePos.width / 2) { flag = true lineElm.style.left = 'unset' @@ -2602,6 +2603,7 @@ class BillboardObject extends Base { } if (height !== undefined) { this.options.positions.alt = Number(Number(height).toFixed(2)) + this.#_billboardHeight = this.options.positions.alt this._elms.alt && this._elms.alt.forEach(item => { item.value = this.options.positions.alt @@ -2982,7 +2984,7 @@ class BillboardObject extends Base { ` if (!linkHtml && !goodsHtml && !richTextHtml) { - boxHtml = boxHtml + '

暂无属性信息

' + boxHtml = boxHtml + '

暂无属性信息

' } else { boxHtml = boxHtml + ` diff --git a/src/Obj/Base/CurvelineObject/index.js b/src/Obj/Base/CurvelineObject/index.js index 0f632a0..f6ea05f 100644 --- a/src/Obj/Base/CurvelineObject/index.js +++ b/src/Obj/Base/CurvelineObject/index.js @@ -666,7 +666,7 @@ class CurvelineObject extends Base { } set labelShow(v) { this.options.label.show = v - if (this.show) { + if (this.show && !this.showView || this.showView == 3) { this.label.show = v setTimeout(() => { this.label.position = [ diff --git a/src/Obj/Base/EllipseObject/index.js b/src/Obj/Base/EllipseObject/index.js index 7b4631c..db05474 100644 --- a/src/Obj/Base/EllipseObject/index.js +++ b/src/Obj/Base/EllipseObject/index.js @@ -347,7 +347,7 @@ class EllipseObject extends Base { } set labelShow(v) { this.options.label.show = v - if (this.show) { + if (this.show && !this.showView || this.showView == 3) { this.label.show = v } else { diff --git a/src/Obj/Base/PincerArrowObject/index.js b/src/Obj/Base/PincerArrowObject/index.js index 5788789..6c5850c 100644 --- a/src/Obj/Base/PincerArrowObject/index.js +++ b/src/Obj/Base/PincerArrowObject/index.js @@ -334,7 +334,7 @@ class PincerArrowObject extends Base { } set labelShow(v) { this.options.label.show = v - if (this.show) { + if (this.show && !this.showView || this.showView == 3) { this.label.show = v } else { diff --git a/src/Obj/Base/PolygonObject/index.js b/src/Obj/Base/PolygonObject/index.js index ca87983..6d51972 100644 --- a/src/Obj/Base/PolygonObject/index.js +++ b/src/Obj/Base/PolygonObject/index.js @@ -355,7 +355,7 @@ class PolygonObject extends Base { } set labelShow(v) { this.options.label.show = v - if (this.show) { + if (this.show && !this.showView || this.showView == 3) { this.label.show = v } else { this.label.show = false diff --git a/src/Obj/Base/PolyhedronObject/index.js b/src/Obj/Base/PolyhedronObject/index.js index 17d9934..1687d93 100644 --- a/src/Obj/Base/PolyhedronObject/index.js +++ b/src/Obj/Base/PolyhedronObject/index.js @@ -517,7 +517,7 @@ class PolyhedronObject extends Base { } set labelShow(v) { this.options.label.show = v - if (this.show) { + if (this.show && !this.showView || this.showView == 3) { this.label.show = v } else { diff --git a/src/Obj/Base/PolylineObject/index.js b/src/Obj/Base/PolylineObject/index.js index f85e43f..3769d21 100644 --- a/src/Obj/Base/PolylineObject/index.js +++ b/src/Obj/Base/PolylineObject/index.js @@ -701,7 +701,7 @@ class PolylineObject extends Base { } set labelShow(v) { this.options.label.show = v - if (this.show) { + if (this.show && !this.showView || this.showView == 3) { this.label.show = v setTimeout(() => { this.label.position = [ diff --git a/src/Obj/Base/RadarScanStereoscopic/index.js b/src/Obj/Base/RadarScanStereoscopic/index.js index aef9c62..4c07dec 100644 --- a/src/Obj/Base/RadarScanStereoscopic/index.js +++ b/src/Obj/Base/RadarScanStereoscopic/index.js @@ -424,7 +424,7 @@ class RadarScanStereoscopic extends Base { } set labelShow(v) { this.options.label.show = v - if (this.show) { + if (this.show && !this.showView || this.showView == 3) { this.label.show = v } else { diff --git a/src/Obj/Base/SectorObject/index.js b/src/Obj/Base/SectorObject/index.js index 66e9c1e..60d8366 100644 --- a/src/Obj/Base/SectorObject/index.js +++ b/src/Obj/Base/SectorObject/index.js @@ -344,7 +344,7 @@ class SectorObject extends Base { } set labelShow(v) { this.options.label.show = v - if (this.show) { + if (this.show && !this.showView || this.showView == 3) { this.label.show = v } else { diff --git a/src/Obj/Base/StraightArrowObject/index.js b/src/Obj/Base/StraightArrowObject/index.js index f4037ef..8ab636c 100644 --- a/src/Obj/Base/StraightArrowObject/index.js +++ b/src/Obj/Base/StraightArrowObject/index.js @@ -321,7 +321,7 @@ class StraightArrowObject extends Base { } set labelShow(v) { this.options.label.show = v - if (this.show) { + if (this.show && !this.showView || this.showView == 3) { this.label.show = v } else { diff --git a/src/Obj/Base/WallRealStereoscopic/index.js b/src/Obj/Base/WallRealStereoscopic/index.js index 340eaaa..6ae0a9f 100644 --- a/src/Obj/Base/WallRealStereoscopic/index.js +++ b/src/Obj/Base/WallRealStereoscopic/index.js @@ -253,7 +253,7 @@ class WallRealStereoscopic extends Base { } set labelShow(v) { this.options.label.show = v - if (this.show) { + if (this.show && !this.showView || this.showView == 3) { this.label.show = v } else { diff --git a/src/Obj/Base/WallRealStereoscopic/index2.js b/src/Obj/Base/WallRealStereoscopic/index2.js index bb12e89..9583344 100644 --- a/src/Obj/Base/WallRealStereoscopic/index2.js +++ b/src/Obj/Base/WallRealStereoscopic/index2.js @@ -157,7 +157,7 @@ class WallStereoscopic extends Base { } set labelShow(v) { this.options.label.show = v - if (this.show) { + if (this.show && !this.showView || this.showView == 3) { this.label.show = v } else { diff --git a/src/Obj/Base/WallRealStereoscopic2/index.js b/src/Obj/Base/WallRealStereoscopic2/index.js index bd5ee5d..225c6d5 100644 --- a/src/Obj/Base/WallRealStereoscopic2/index.js +++ b/src/Obj/Base/WallRealStereoscopic2/index.js @@ -243,7 +243,7 @@ class WallRealStereoscopic extends Base { } set labelShow(v) { this.options.label.show = v - if (this.show) { + if (this.show && !this.showView || this.showView == 3) { this.label.show = v } else { diff --git a/src/Obj/Base/WallStereoscopic/index.js b/src/Obj/Base/WallStereoscopic/index.js index 49a0edf..1b37194 100644 --- a/src/Obj/Base/WallStereoscopic/index.js +++ b/src/Obj/Base/WallStereoscopic/index.js @@ -195,7 +195,7 @@ class WallStereoscopic extends Base { } set labelShow(v) { this.options.label.show = v - if (this.show) { + if (this.show && !this.showView || this.showView == 3) { this.label.show = v } else { diff --git a/src/Obj/Base/index.js b/src/Obj/Base/index.js index fedb92a..86f8d5f 100644 --- a/src/Obj/Base/index.js +++ b/src/Obj/Base/index.js @@ -9,6 +9,7 @@ import Tools from "../../Tools"; import { getHost, getToken } from "../../on"; import { regLeftClickCallback, regRightClickCallback, regMoveCallback } from "../../Global/ClickCallback"; import { regLeftClickCallback as regLeftClickCallback2, regRightClickCallback as regRightClickCallback2, regMoveCallback as regMoveCallback2 } from "../../Global/SplitScreen/ClickCallback"; +import { regLeftClickCallback as regLeftClickCallback3, regRightClickCallback as regRightClickCallback3, regMoveCallback as regMoveCallback3 } from "../../Global/MultiViewportMode/ClickCallback"; import { setSplitDirection, syncSplitData, getSdk } from "../../Global/SplitScreen"; import { syncData, getSdk as get2DSdk } from '../../Global/MultiViewportMode' import { setActiveViewer, closeRotateAround, closeViewFollow } from '../../Global/global' @@ -68,7 +69,7 @@ class Base extends Tools { let sdk2D = get2DSdk().sdkD if (!sdk2D) { this.#_showView = v - if(this.entity) { + if (this.entity) { this.entity._showView = v } return @@ -361,12 +362,17 @@ class Base extends Tools { console.error('val:', val, '不是一个function') } else { let sdkD = getSdk().sdkD + let sdk2D = get2DSdk().sdkD if (sdkD && this.sdk === sdkD) { if (this.clickCallBack == null && this.options && this.options.id) { regLeftClickCallback2(this.options.id, this.leftClickCB, this) } } - else { + else if (sdk2D && this.sdk === sdk2D) { + if (this.clickCallBack == null && this.options && this.options.id) { + regLeftClickCallback3(this.options.id, this.leftClickCB, this) + } + } else { if (this.clickCallBack == null && this.options && this.options.id) { regLeftClickCallback(this.options.id, this.leftClickCB, this) } @@ -384,12 +390,17 @@ class Base extends Tools { console.error('val:', val, '不是一个function') } else { let sdkD = getSdk().sdkD + let sdk2D = get2DSdk().sdkD if (sdkD && this.sdk === sdkD) { if (this.rightClickCallBack == null && this.entity && this.entity.id) { regRightClickCallback2(this.entity.id, this.rightClickCB, this) } } - else { + else if (sdk2D && this.sdk === sdk2D) { + if (this.clickCallBack == null && this.options && this.options.id) { + regRightClickCallback3(this.options.id, this.leftClickCB, this) + } + } else { if (this.rightClickCallBack == null && this.entity && this.entity.id) { regRightClickCallback(this.entity.id, this.rightClickCB, this) } @@ -407,12 +418,17 @@ class Base extends Tools { console.error('val:', val, '不是一个function') } else { let sdkD = getSdk().sdkD + let sdk2D = get2DSdk().sdkD if (sdkD && this.sdk === sdkD) { if (this.mouseMoveCallBack == null && this.entity && this.entity.id) { regMoveCallback2(this.entity.id, this.mouseMoveCB, this) } } - else { + else if (sdk2D && this.sdk === sdk2D) { + if (this.clickCallBack == null && this.options && this.options.id) { + regMoveCallback3(this.options.id, this.leftClickCB, this) + } + } else { if (this.mouseMoveCallBack == null && this.entity && this.entity.id) { regMoveCallback(this.entity.id, this.mouseMoveCB, this) } diff --git a/src/YJEarth/index.js b/src/YJEarth/index.js index 0f5df67..6fc9060 100644 --- a/src/YJEarth/index.js +++ b/src/YJEarth/index.js @@ -62,9 +62,9 @@ class YJEarth { removeIncetance(id) { this.entityMap.delete(id) - unRegLeftClickCallback(id) - unRegRightClickCallback(id) - unregMoveCallback(id) + unRegLeftClickCallback(this,id) + unRegRightClickCallback(this,id) + unregMoveCallback(this,id) syncSplitData(this, id) } diff --git a/static/custom/css/index.css b/static/custom/css/index.css index e27a648..2392cf0 100644 --- a/static/custom/css/index.css +++ b/static/custom/css/index.css @@ -3627,6 +3627,7 @@ height: 100%; display: flex; flex-direction: column; + backdrop-filter: blur(2px); } .billboard-attribute-box .DIV-cy-tabs .DIV-cy-tab-top .DIV-cy-tab-pane-title {