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/Global/mouseRightMenu/index.js b/src/Global/mouseRightMenu/index.js
index 413b556..8ca3f03 100644
--- a/src/Global/mouseRightMenu/index.js
+++ b/src/Global/mouseRightMenu/index.js
@@ -121,9 +121,6 @@ function MouseRightMenu(sdk, status, callBack) {
-
${addedMenu}
`
_element.appendChild(menuElm)
diff --git a/src/In/index.js b/src/In/index.js
index ebfff60..ac158cb 100644
--- a/src/In/index.js
+++ b/src/In/index.js
@@ -187,7 +187,7 @@ import DrawTakeOff from '../Obj/AirLine/DrawTakeOff'
import FlowLine from '../Obj/Base/FlowLine'
import Sunshine from '../Global/efflect/Sunshine'
// import Road2 from '../Obj/Base/RoadObject'
-import TextBox from '../Obj/Base/TextBox'
+// import TextBox from '../Obj/Base/TextBox'
import BatchModel from '../Obj/Base/BatchModel'
const YJEarthismeasuring = Symbol('测量状态')
@@ -262,7 +262,7 @@ if (!window.YJ) {
Dialog,
FlowLine,
// Road2,
- TextBox,
+ // TextBox,
BatchModel
},
YJEarth,
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..f1ca715 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/BaseSource/BaseModel/Model2/index.js b/src/Obj/Base/BaseSource/BaseModel/Model2/index.js
index 7a3f5cd..ae16232 100644
--- a/src/Obj/Base/BaseSource/BaseModel/Model2/index.js
+++ b/src/Obj/Base/BaseSource/BaseModel/Model2/index.js
@@ -550,7 +550,7 @@ class Model2 extends BaseModel {
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/CircleObject/index.js b/src/Obj/Base/CircleObject/index.js
index d85022b..2145097 100644
--- a/src/Obj/Base/CircleObject/index.js
+++ b/src/Obj/Base/CircleObject/index.js
@@ -333,7 +333,7 @@ class CircleObject extends Base {
}
set labelShow(v) {
this.options.label.show = v
- if (this.show && (!this.showView || this.showView == 3)) {
+ if (this.show && !this.showView || this.showView == 3) {
this.label.show = v
}
else {
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/GroundSvg/index.js b/src/Obj/Base/GroundSvg/index.js
index 5e175aa..629a86a 100644
--- a/src/Obj/Base/GroundSvg/index.js
+++ b/src/Obj/Base/GroundSvg/index.js
@@ -1,7 +1,7 @@
import Dialog from '../../Element/Dialog';
import { html } from "./_element";
import EventBinding from '../../Element/Dialog/eventBinding';
-import { syncData } from '../../../Global/MultiViewportMode'
+import { syncData, getSdk } from '../../../Global/MultiViewportMode'
import LabelObject from '../LabelObject'
import DrawPoint from '../../../Draw/drawPoint.js'
import richText from '../../Element/richText'
@@ -19,6 +19,7 @@ import { setSplitDirection, syncSplitData, setActiveId } from '../../../Global/S
class GroundSvg extends Base {
#_textPosPickDrawEvent = null
+ #_destroyed = false
/**
* @constructor
* @param sdk
@@ -97,7 +98,7 @@ class GroundSvg extends Base {
}
this.options.offset = options.offset || { x: 0.5, y: 1 }
- this.options.mode = this.options.mode ? 1 : 0
+ this.options.mode = this.options.mode || this.options.mode == undefined || this.options.mode == null ? 1 : 0
this.options.billboard = options.billboard || {}
this.options.billboard.scale = this.options.billboard.scale || 1
this.options.billboard.near = this.options.billboard.near || this.options.billboard.near === 0 ? this.options.billboard.near : 2000
@@ -1324,6 +1325,19 @@ class GroundSvg extends Base {
let _this = this
let heightMode
let font = getFontFamily(this.labelFontFamily) || 'Helvetica'
+ let { sdkP, sdkD } = getSdk()
+ let show = true
+ if (this.sdk === sdkP) {
+ if (this.showView == 2) {
+ show = false
+ }
+ }
+ else if (this.sdk === sdkD) {
+ if (this.showView == 3) {
+ show = false
+ }
+ }
+
if (this.entity) {
this.sdk.viewer.entities.remove(this.entity)
this.text && this.text.remove()
@@ -1389,7 +1403,7 @@ class GroundSvg extends Base {
)
_this.entity = new Cesium.Entity({
- show: _this.options.show,
+ show: show ? _this.options.show : false,
id: _this.options.id,
position: new Cesium.CallbackProperty(() => {
return Cesium.Cartesian3.fromDegrees(
@@ -1454,6 +1468,7 @@ class GroundSvg extends Base {
}
else {
this.entity = new Cesium.EntityCollection()
+ this.entity.show = show ? this.options.show : false
let perPositionHeight = false
if (this.sdk.viewer._element.className === 'cesium-viewer 2d') {
perPositionHeight = true
@@ -1462,7 +1477,6 @@ class GroundSvg extends Base {
for (let m = 0; m < this.hierarchys[i].length; m++) {
let entity = this.sdk.viewer.entities.add({
id: this.options.id + `-${i}_${m}`,
- show: this.options.show,
polygon: {
hierarchy: new Cesium.CallbackProperty(() => {
let hierarchy = this.hierarchys[i][m]
@@ -1838,15 +1852,44 @@ class GroundSvg extends Base {
}
})
labelOffsetXElm.addEventListener('input', (e) => {
- this.labelOffset = {
- x: Number(e.target.value),
- y: this.labelOffset.y
+ let value = e.target.value
+ value = Number(value)
+ if (e.data != '-' || e.target.value) {
+ if ((e.target.max) && value > Number(e.target.max)) {
+ value = Number(e.target.max)
+ }
+ if ((e.target.min) && value < Number(e.target.min)) {
+ value = Number(e.target.min)
+ }
+ if ((e.target.dataset.min) && value < Number(e.target.dataset.min)) {
+ value = Number(e.target.dataset.min)
+ }
+ this.labelOffset = {
+ x: value,
+ y: this.labelOffset.y
+ }
}
+
})
labelOffsetYElm.addEventListener('input', (e) => {
- this.labelOffset = {
- x: this.labelOffset.x,
- y: Number(e.target.value)
+ if (e.target.value || e.target.value === 0) {
+ let value = e.target.value
+ value = Number(value)
+ if (e.data != '-' || e.target.value) {
+ if ((e.target.max) && value > Number(e.target.max)) {
+ value = Number(e.target.max)
+ }
+ if ((e.target.min) && value < Number(e.target.min)) {
+ value = Number(e.target.min)
+ }
+ if ((e.target.dataset.min) && value < Number(e.target.dataset.min)) {
+ value = Number(e.target.dataset.min)
+ }
+ this.labelOffset = {
+ x: this.labelOffset.x,
+ y: Number(value)
+ }
+ }
}
})
@@ -1890,8 +1933,6 @@ class GroundSvg extends Base {
}
}
-
-
this.attributeLink = this.options.attribute.link.content
let tagData = this.attributeSelect
let attributeElm = this._DialogObject._element.content.getElementsByClassName(
@@ -2274,9 +2315,10 @@ class GroundSvg extends Base {
* 重置
*/
reset() {
- if (!this.#loaded) {
+ if (!this.#loaded || this.#_destroyed) {
return
}
+
this.options = this.deepCopyObj(this.originalOptions)
this.position = this.originalOptions.position
this.name = this.originalOptions.name
@@ -2303,7 +2345,7 @@ class GroundSvg extends Base {
* @param {boolean} status=false 状态
*/
drag(status, cd) {
- if (!this.#loaded || !this.sdk || !this.sdk.viewer) {
+ if (!this.#loaded || !this.sdk || !this.sdk.viewer || !this.entity || !this.entity.values || this.entity.values.length == 0) {
return
}
let greenImg = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA+0lEQVR4AZSTPQ7CMAyFk0jAFYCRCbgEbHAKBqRyKCoYOAVs5RLAQseKKxQkwntWVCltJdzK+bO/59ZW6kztGX6mi/F7dhiV0ydWzxH2B8ZquIkSAN47bzNAW2vtBKtY2G8ZIyPOMFUJxuX8DF+C8c+SwAonCSSr9SvxaCawogHrQl2aNwOPLKHWoa5N5O5woNZ575cdNBFKrQsdjgLaA7XSRK2gjWMJeVtA40MJOUvgxdHwDQYlZO5r/akRUTqoda/e4wo+xehqKbXSxKJ/3xlvL+oMYEUDgSTAaorBbY1V8yVpYIGb+G9kVtTFi3Vkh4XAFPZHxsjAVdkPAAD//0PYov0AAAAGSURBVAMA5pZjby819WUAAAAASUVORK5CYII='
@@ -3277,6 +3319,7 @@ class GroundSvg extends Base {
this.sdk.viewer.entities.remove(this.entity.values[i])
}
}
+ this.#_destroyed = true
if (this._DialogObject && !this._DialogObject.isDestroy) {
this._DialogObject.close()
this._DialogObject = null
@@ -3467,7 +3510,7 @@ class GroundSvg extends Base {
128 * this.billboardScale * (0.5 - this.options.offset.x) + this.options.label.offset.x,
-billboardH * this.billboardScale -
this.options.label.fontSize / 2 -
- 5 + this.options.label.offset.y
+ 5 + this.options.label.offset.y + ((1 - this.options.offset.y) * 128 * this.billboardScale)
)
this.entity.label.pixelOffset = lablePixelOffset
}
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 300c41c..35273d8 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/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)
}