diff --git a/src/Global/MouseCoordinate/index.js b/src/Global/MouseCoordinate/index.js
index 147f96a..d1fa1dd 100644
--- a/src/Global/MouseCoordinate/index.js
+++ b/src/Global/MouseCoordinate/index.js
@@ -2,7 +2,7 @@
* 鼠标坐标
*/
import Tools from "../../Tools";
-import { getCoordinateSystem } from "../../Global/global";
+import { getCoordinateSystem, getDMS } from "../../Global/global";
import MouseEvent from '../../Event/index'
import { getSdk as get2DSdk } from '../../Global/MultiViewportMode'
import { getSdk as getSplitScreenSdk } from "../../Global/SplitScreen";
@@ -21,11 +21,12 @@ const MouseCoordinate = (sdk, status) => {
}
targetSdk = sdk
sdkD = get2DSdk().sdkD
- if(!sdkD) {
+ if (!sdkD) {
sdkD = getSplitScreenSdk().sdkD
}
let tools = new Tools(sdk)
+ let proj = sdk.proj
if (status) {
if (event) {
event.destroy()
@@ -73,7 +74,7 @@ const MouseCoordinate = (sdk, status) => {
}
let canvas = sdk.viewer._element.getElementsByTagName('canvas')[0]
sdkD = get2DSdk().sdkD
- if(!sdkD) {
+ if (!sdkD) {
sdkD = getSplitScreenSdk().sdkD
}
if (!event2 && sdkD) {
@@ -118,13 +119,27 @@ const MouseCoordinate = (sdk, status) => {
if (cartesian) {
let degrees = tools.cartesian3Towgs84(cartesian, sdk.viewer)
let coordinateSystem = getCoordinateSystem()
+ let positionType = getDMS()
if (coordinateSystem === 'EPSG:4326') {
position = {
x: degrees.lng,
y: degrees.lat,
z: degrees.alt
}
- contentElm.innerHTML = `
经度:${degrees.lng.toFixed(6)}°
维度:${degrees.lat.toFixed(6)}°
海拔:${degrees.alt.toFixed(2)} m
`
+ // contentElm.innerHTML = `经度:${degrees.lng.toFixed(6)}°
维度:${degrees.lat.toFixed(6)}°
海拔:${degrees.alt.toFixed(2)} m
`
+ switch (positionType || '度') {
+ case '度':
+ contentElm.innerHTML = `经度:${degrees.lng.toFixed(6)}°
维度:${degrees.lat.toFixed(6)}°
海拔:${degrees.alt.toFixed(2)} m
`
+ break;
+ case '度分':
+ contentElm.innerHTML = `经度:${proj.degreesToDMS(degrees.lng, true)}
维度:${proj.degreesToDMS(degrees.lat, true)}
海拔:${degrees.alt.toFixed(2)} m
`
+ break;
+ case '度分秒':
+ contentElm.innerHTML = `经度:${proj.degreesToDMS(degrees.lng, false)}
维度:${proj.degreesToDMS(degrees.lat, false)}
海拔:${degrees.alt.toFixed(2)} m
`
+ break;
+ default:
+ break;
+ }
}
else {
let result = tools.convert([{ x: degrees.lng, y: degrees.lat, z: degrees.alt }], 'EPSG:4326', coordinateSystem)
diff --git a/src/Global/efflect/Sunshine/index.js b/src/Global/efflect/Sunshine/index.js
index 4a921a1..df260a1 100644
--- a/src/Global/efflect/Sunshine/index.js
+++ b/src/Global/efflect/Sunshine/index.js
@@ -26,7 +26,12 @@ export default class Sunshine {
this.viewer = sdk.viewer
this.options = { ...options }
this.sdk = { ...sdk }
- this.options.time = options.time || new Date()
+
+
+ const now = new Date();
+ now.setHours(0, 0, 0, 0); // 设置为当天0点
+ this.options.time = options.time
+ this.options.hour = options.hour
this.options.speed = options.speed || 1000
this.options.darkness = options.darkness || 0.4
this.options.softShadow = options.softShadow || true
@@ -47,9 +52,16 @@ export default class Sunshine {
that.viewer.terrainShadows = Cesium.ShadowMode.RECEIVE_ONLY
that.viewer.shadowMap.darkness = 1.0 - that.options.darkness //阴影透明度--越大越透明
- const now = new Date();
- now.setHours(0, 0, 0, 0); // 设置为当天0点
- that.viewer.clock.currentTime = Cesium.JulianDate.fromDate(now);
+ // const now = new Date();
+ // now.setHours(0, 0, 0, 0); // 设置为当天0点
+ let date
+ if (that.options.time && that.options.hour) {
+ date = new Date(that.options.time + " " + that.options.hour)
+ } else {
+ date = new Date();
+ date.setHours(0, 0, 0, 0); // 设置为当天0点
+ }
+ that.viewer.clock.currentTime = Cesium.JulianDate.fromDate(date);
that.viewer.clock.multiplier = that.options.speed;
that.viewer.shadowMap.softShadows = that.options.softShadow;
that.viewer.shadowMap.cascadesEnabled = true
@@ -61,7 +73,7 @@ export default class Sunshine {
lightCamera.frustum.far = 10000; // 扩大远平面距离
that.viewer.shadowMap.normalOffset = true; // 避免深度冲突导致的阴影闪烁
- that.edit(true)
+ // that.edit(true)
}
get darkness() {
return this.options.darkness
@@ -74,6 +86,27 @@ export default class Sunshine {
item.value = v
})
}
+ get time() {
+ return this.options.time
+ }
+ set time(v) {
+ this.options.time = v
+ const now = new Date();
+ let timeData = now.setHours(0, 0, 0, 0); // 设置为当天0点
+ this.viewer.clock.currentTime = Cesium.JulianDate.fromDate(new Date(timeData));
+
+ // _that.timeLine.updateTime(timeData)
+ }
+ set timeBar(v) {
+ let timeData = this.time + " " + v
+ this.viewer.clock.currentTime = Cesium.JulianDate.fromDate(new Date(timeData));
+ this.viewer.scene.requestRender();
+ }
+ set realTime(v) {
+ const now = new Date();
+ this.viewer.clock.currentTime = Cesium.JulianDate.fromDate(now);
+ }
+
get speed() {
return this.options.speed
@@ -85,7 +118,7 @@ export default class Sunshine {
item.value = v
})
this.viewer.clock.multiplier = this.options.speed;
- this.timeLine.setSpeed(v)
+ // this.timeLine.setSpeed(v)
}
get softShadow() {
return this.options.softShadow
@@ -115,41 +148,41 @@ export default class Sunshine {
if (state) {
let _this = this
- this._DialogObject = await new Dialog(this.sdk, this.originalOptions, {
- title: '光照属性', left: '180px', top: '100px',
- // confirmCallBack: (options) => {
- // this.originalOptions = tools.deepCopyObj(this.options)
- // this._DialogObject.close()
- // this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(this.originalOptions)
- // syncData(this.sdk, this.options.id)
- // syncSplitData(this.sdk, this.options.id)
- // this.remove()
- // },
- resetCallBack: () => {
- this.reset()
- this.Dialog.resetCallBack && this.Dialog.resetCallBack()
- },
- // removeCallBack: () => {
- // this.Dialog.removeCallBack && this.Dialog.removeCallBack()
- // },
- closeCallBack: () => {
- this.reset()
- _this.remove()
- // this.entity.style = new Cesium.Cesium3DTileStyle({
- // color: "color('rgba(255,255,255," + this.newData.transparency + ")')",
- // show: true,
- // });
- this.Dialog.closeCallBack && this.Dialog.closeCallBack()
- },
- showCallBack: (show) => {
- this.show = show
- this.Dialog.showCallBack && this.Dialog.showCallBack()
- }
- }, true)
- this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' sun-shine-surface'
- let contentElm = document.createElement('div');
- contentElm.innerHTML = html()
- this._DialogObject.contentAppChild(contentElm)
+ // this._DialogObject = await new Dialog(this.sdk, this.originalOptions, {
+ // title: '光照属性', left: '180px', top: '100px',
+ // // confirmCallBack: (options) => {
+ // // this.originalOptions = tools.deepCopyObj(this.options)
+ // // this._DialogObject.close()
+ // // this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(this.originalOptions)
+ // // syncData(this.sdk, this.options.id)
+ // // syncSplitData(this.sdk, this.options.id)
+ // // this.remove()
+ // // },
+ // resetCallBack: () => {
+ // this.reset()
+ // this.Dialog.resetCallBack && this.Dialog.resetCallBack()
+ // },
+ // // removeCallBack: () => {
+ // // this.Dialog.removeCallBack && this.Dialog.removeCallBack()
+ // // },
+ // closeCallBack: () => {
+ // this.reset()
+ // _this.remove()
+ // // this.entity.style = new Cesium.Cesium3DTileStyle({
+ // // color: "color('rgba(255,255,255," + this.newData.transparency + ")')",
+ // // show: true,
+ // // });
+ // this.Dialog.closeCallBack && this.Dialog.closeCallBack()
+ // },
+ // showCallBack: (show) => {
+ // this.show = show
+ // this.Dialog.showCallBack && this.Dialog.showCallBack()
+ // }
+ // }, true)
+ // this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' sun-shine-surface'
+ // let contentElm = document.createElement('div');
+ // contentElm.innerHTML = html()
+ // this._DialogObject.contentAppChild(contentElm)
//时间轴
let _that = this
@@ -159,8 +192,6 @@ export default class Sunshine {
let timeData = _that.time + " " + item
_that.viewer.clock.currentTime = Cesium.JulianDate.fromDate(new Date(timeData));
_that.viewer.scene.requestRender();
-
-
})
let jeDateObject
let printDateElm = contentElm.getElementsByClassName('sunshine-date')[0]
@@ -228,7 +259,7 @@ export default class Sunshine {
this.viewer.clock.multiplier = 1.0
this.viewer.clock.currentTime = Cesium.JulianDate.fromDate(new Date());
this.entity = null
- this.timeLine.clear()
+ this.timeLine && this.timeLine.clear()
this.viewer.shadowMap.cascadesEnabled = false
this.viewer.shadowMap.size = 1024;
diff --git a/src/Global/global.js b/src/Global/global.js
index 9cbaa08..630f0d0 100644
--- a/src/Global/global.js
+++ b/src/Global/global.js
@@ -17,6 +17,7 @@ import { updateCluster } from './cluster/cluster'
import { getHost } from "../on";
let coordinateSystem = 'EPSG:4326'
+let positionType = '度'
let _cartesian
let GroundCover = true
let bimPickObject = {}
@@ -197,14 +198,40 @@ function CesiumContainer(sdk, options) {
let position = tools.cartesian3Towgs84(_cartesian, sdk.viewer)
// position.alt = height
if (coordinateSystem === 'EPSG:4326') {
- infoElm.innerHTML = `
+ // infoElm.innerHTML = `
+ // 经度:${Number(position.lng.toFixed(6))}°
+ // 纬度:${Number(position.lat.toFixed(6))}°
+ // 海拔高度:${Number(position.alt.toFixed(2))}米
+ // `
+ switch (positionType || '度') {
+ case '度':
+ infoElm.innerHTML = `
经度:${Number(position.lng.toFixed(6))}°
纬度:${Number(position.lat.toFixed(6))}°
海拔高度:${Number(position.alt.toFixed(2))}米
`
+ break;
+ case '度分':
+ infoElm.innerHTML = `
+ 经度:${proj.degreesToDMS(position.lng, true)}
+ 纬度:${proj.degreesToDMS(position.lat, true)}
+ 海拔高度:${Number(position.alt.toFixed(2))}米
+ `
+ break;
+ case '度分秒':
+ infoElm.innerHTML = `
+ 经度:${proj.degreesToDMS(position.lng, false)}
+ 纬度:${proj.degreesToDMS(position.lat, false)}
+ 海拔高度:${Number(position.alt.toFixed(2))}米
+ `
+ break;
+ default:
+ break;
+ }
}
else {
let result = proj.convert([{ x: position.lng, y: position.lat, z: position.alt }], 'EPSG:4326', coordinateSystem)
+ console.log(result, 'result12');
infoElm.innerHTML = `
x:${Number(result.points[0].x.toFixed(6))}
y:${Number(result.points[0].y.toFixed(6))}
@@ -723,7 +750,6 @@ function splitScreen(sdk, status) {
item.entity && (item.entity.splitDirection = value)
}
}
- console.log()
})
}
}
@@ -745,14 +771,40 @@ function setCoordinateSystem(sdk, epsg) {
let proj = sdk.proj
let position = tools.cartesian3Towgs84(_cartesian, sdk.viewer)
if (coordinateSystem === 'EPSG:4326') {
- infoElm.innerHTML = `
+ // infoElm.innerHTML = `
+ // 经度:${Number(position.lng.toFixed(6))}°
+ // 纬度:${Number(position.lat.toFixed(6))}°
+ // 海拔高度:${Number(position.alt.toFixed(2))}米
+ // `
+ switch (positionType || '度') {
+ case '度':
+ infoElm.innerHTML = `
经度:${Number(position.lng.toFixed(6))}°
纬度:${Number(position.lat.toFixed(6))}°
海拔高度:${Number(position.alt.toFixed(2))}米
`
+ break;
+ case '度分':
+ infoElm.innerHTML = `
+ 经度:${proj.degreesToDMS(position.lng, true)}
+ 纬度:${proj.degreesToDMS(position.lat, true)}
+ 海拔高度:${Number(position.alt.toFixed(2))}米
+ `
+ break;
+ case '度分秒':
+ infoElm.innerHTML = `
+ 经度:${proj.degreesToDMS(position.lng, false)}
+ 纬度:${proj.degreesToDMS(position.lat, false)}
+ 海拔高度:${Number(position.alt.toFixed(2))}米
+ `
+ break;
+ default:
+ break;
+ }
}
else {
let result = proj.convert([{ x: position.lng, y: position.lat, z: position.alt }], 'EPSG:4326', coordinateSystem)
+ console.log(result, 'result')
infoElm.innerHTML = `
x:${Number(result.points[0].x.toFixed(6))}
y:${Number(result.points[0].y.toFixed(6))}
@@ -761,6 +813,52 @@ function setCoordinateSystem(sdk, epsg) {
}
}
+function getDMS() {
+ return positionType
+}
+function setDMS(sdk, type) {
+ if (coordinateSystem !== 'EPSG:4326') {
+ return
+ }
+ positionType = type
+ if (!sdk || !sdk.viewer || !sdk.viewer._element) {
+ return
+ }
+ let infoElm = sdk.viewer._element.getElementsByClassName('cesium-info')[0]
+ if (!_cartesian || !infoElm) {
+ return
+ }
+ let tools = new Tools()
+ let proj = sdk.proj
+ let position = tools.cartesian3Towgs84(_cartesian, sdk.viewer)
+ switch (type) {
+ case '度':
+ infoElm.innerHTML = `
+ 经度:${Number(position.lng.toFixed(6))}°
+ 纬度:${Number(position.lat.toFixed(6))}°
+ 海拔高度:${Number(position.alt.toFixed(2))}米
+ `
+ break;
+ case '度分':
+ infoElm.innerHTML = `
+ 经度:${proj.degreesToDMS(position.lng, true)}
+ 纬度:${proj.degreesToDMS(position.lat, true)}
+ 海拔高度:${Number(position.alt.toFixed(2))}米
+ `
+ break;
+ case '度分秒':
+ infoElm.innerHTML = `
+ 经度:${proj.degreesToDMS(position.lng, false)}
+ 纬度:${proj.degreesToDMS(position.lat, false)}
+ 海拔高度:${Number(position.alt.toFixed(2))}米
+ `
+ break;
+ default:
+ break;
+ }
+ proj.degreesToDMS(position.lng, true)
+}
+
function cameraChanged(sdk, cb) {
let tools = new Tools()
//设置相机变化的监听事件
@@ -846,4 +944,4 @@ function enablePerspective(sdk, alpha = 1) {
sdk.viewer.scene.globe.translucency.frontFaceAlpha = alpha
}
-export { getCurrentView, setDefaultView, flyTo, CameraController, CesiumContainer, setBillboardDefaultUrl, getBillboardDefaultUrl, setGroundCover, getGroundCover, getBimPickStatus, setBimPickStatus, rotateAround, closeRotateAround, closeViewFollow, FlwStatusSwitch, JwwStatusSwitch, getFlwStatus, getJwwStatus, getCoordinateSystem, setCoordinateSystem, cameraChanged, setMaximumRequestsPerServer, setKeyboardEventActive, getTheme, setTheme, getCesiumIndexedDBMaxSize, setCesiumIndexedDBMaxSize, getCesiumManageIndexexDBState, setCesiumManageIndexexDBState, getCesiumIndexedDBCurrentSize, setActiveViewer, enablePerspective }
+export { getCurrentView, setDefaultView, flyTo, CameraController, CesiumContainer, setBillboardDefaultUrl, getBillboardDefaultUrl, setGroundCover, getGroundCover, getBimPickStatus, setBimPickStatus, rotateAround, closeRotateAround, closeViewFollow, FlwStatusSwitch, JwwStatusSwitch, getFlwStatus, getJwwStatus, getCoordinateSystem, setCoordinateSystem, getDMS, setDMS, cameraChanged, setMaximumRequestsPerServer, setKeyboardEventActive, getTheme, setTheme, getCesiumIndexedDBMaxSize, setCesiumIndexedDBMaxSize, getCesiumManageIndexexDBState, setCesiumManageIndexexDBState, getCesiumIndexedDBCurrentSize, setActiveViewer, enablePerspective }
diff --git a/src/In/index.js b/src/In/index.js
index f9a78fa..2caa374 100644
--- a/src/In/index.js
+++ b/src/In/index.js
@@ -17,6 +17,8 @@ import {
rotateAround,
getCoordinateSystem,
setCoordinateSystem,
+ getDMS,
+ setDMS,
cameraChanged,
setMaximumRequestsPerServer,
setKeyboardEventActive,
@@ -324,6 +326,8 @@ if (!window.YJ) {
rotateAround,
getCoordinateSystem,
setCoordinateSystem,
+ getDMS,
+ setDMS,
DTH,
cameraChanged,
setMaximumRequestsPerServer,