修改文本框

This commit is contained in:
2025-09-28 14:43:13 +08:00
parent d20e10644f
commit 5a4515733e
4 changed files with 1403 additions and 1375 deletions

File diff suppressed because it is too large Load Diff

View File

@ -76,11 +76,19 @@ async function ScreenShot(sdk, cd = () => { }) {
} }
let _DialogObject let _DialogObject
let startScreenShotObject
async function ScreenShotHD(sdk, options = {}, cd = () => { }) { async function ScreenShotHD(sdk, confirm = true, params, cd = () => { }) {
if (!sdk) { if (!sdk) {
return return
} }
if (!confirm) {
if (startScreenShotObject) {
startScreenShotObject.desist()
startScreenShotObject = null
}
return
}
offSplitScreen(sdk) offSplitScreen(sdk)
offMultiViewportMode(sdk) offMultiViewportMode(sdk)
if (_DialogObject) { if (_DialogObject) {
@ -92,84 +100,84 @@ async function ScreenShotHD(sdk, options = {}, cd = () => { }) {
let enableTilt = sdk.viewer.scene.screenSpaceCameraController.enableTilt let enableTilt = sdk.viewer.scene.screenSpaceCameraController.enableTilt
let enableLook = sdk.viewer.scene.screenSpaceCameraController.enableLook let enableLook = sdk.viewer.scene.screenSpaceCameraController.enableLook
let scale = 1 let scale = params.scaleV * 1
let level let level
let progressInputElm let progressInputElm
let progressBarElm let progressBarElm
let rangeNodeActive let rangeNodeActive
let rangeNodeActiveText let rangeNodeActiveText
let startScreenShotObject // let startScreenShotObject
let tools = new Tools(); let tools = new Tools();
_DialogObject = await new Dialog(sdk, {}, { // _DialogObject = await new Dialog(sdk, {}, {
title: '高清出图', left: '180px', top: '100px', // title: '高清出图', left: '180px', top: '100px',
confirmCallBack: (options) => { // confirmCallBack: (options) => {
if (startScreenShotObject) { // if (startScreenShotObject) {
startScreenShotObject.desist() // startScreenShotObject.desist()
startScreenShotObject = null // startScreenShotObject = null
} // }
progressInputElm && (progressInputElm.style.width = '0%') // progressInputElm && (progressInputElm.style.width = '0%')
rangeNodeActive && (rangeNodeActive.style.left = '0%') // rangeNodeActive && (rangeNodeActive.style.left = '0%')
progressBarElm && (progressBarElm.style.width = '0%') // progressBarElm && (progressBarElm.style.width = '0%')
rangeNodeActiveText && (rangeNodeActiveText.innerHTML = '0%') // rangeNodeActiveText && (rangeNodeActiveText.innerHTML = '0%')
startScreenShotObject = new startScreenShot() // startScreenShotObject = new startScreenShot()
}, // },
closeCallBack: () => { // closeCallBack: () => {
sdk.viewer.scene.screenSpaceCameraController.enableTranslate = enableTranslate; // sdk.viewer.scene.screenSpaceCameraController.enableTranslate = enableTranslate;
sdk.viewer.scene.screenSpaceCameraController.enableTilt = enableTilt; // sdk.viewer.scene.screenSpaceCameraController.enableTilt = enableTilt;
sdk.viewer.scene.screenSpaceCameraController.enableLook = enableLook; // sdk.viewer.scene.screenSpaceCameraController.enableLook = enableLook;
sdk.viewer._element.getElementsByClassName('compass')[0].style.pointerEvents = 'auto' // sdk.viewer._element.getElementsByClassName('compass')[0].style.pointerEvents = 'auto'
if (startScreenShotObject) { // if (startScreenShotObject) {
startScreenShotObject.desist() // startScreenShotObject.desist()
startScreenShotObject = null // startScreenShotObject = null
} // }
_DialogObject = undefined // _DialogObject = undefined
} // }
}) // })
_DialogObject._element.body.className = _DialogObject._element.body.className + ' screenShotHD' // _DialogObject._element.body.className = _DialogObject._element.body.className + ' screenShotHD'
let contentElm = document.createElement('div'); // let contentElm = document.createElement('div');
contentElm.innerHTML = ` // contentElm.innerHTML = `
<span class="custom-divider"></span> // <span class="custom-divider"></span>
<div class="div-item"> // <div class="div-item">
<div class="row text" style="align-items: flex-start;"> // <div class="row text" style="align-items: flex-start;">
<div class="col"> // <div class="col">
<span>当前窗口长宽:<span class="input-width">${sdk.viewer.canvas.width}</span>*<span class="input-height">${sdk.viewer.canvas.height}</span>像素</span> // <span>当前窗口长宽:<span class="input-width">${sdk.viewer.canvas.width}</span>*<span class="input-height">${sdk.viewer.canvas.height}</span>像素</span>
</div> // </div>
</div> // </div>
<div class="row scale-box" style="align-items: flex-start;"> // <div class="row scale-box" style="align-items: flex-start;">
<div class="col"> // <div class="col">
<span class="label">图片大小</span> // <span class="label">图片大小</span>
<div class="input input-select scale"></div> // <div class="input input-select scale"></div>
<span>倍窗口</span> // <span>倍窗口</span>
</div> // </div>
</div> // </div>
<div class="row text" style="align-items: flex-start;"> // <div class="row text" style="align-items: flex-start;">
<div class="col"> // <div class="col">
<span>输出图片长宽:<span class="output-width">${sdk.viewer.canvas.width * scale}</span>*<span class="output-height">${sdk.viewer.canvas.height * scale}</span>像素</span> // <span>输出图片长宽:<span class="output-width">${sdk.viewer.canvas.width * scale}</span>*<span class="output-height">${sdk.viewer.canvas.height * scale}</span>像素</span>
</div> // </div>
</div> // </div>
<div class="row" style="align-items: flex-start; margin-bottom: 20px;"> // <div class="row" style="align-items: flex-start; margin-bottom: 20px;">
<div class="col"> // <div class="col">
<span class="label">输出进度</span> // <span class="label">输出进度</span>
<div class="range-box"> // <div class="range-box">
<div class="range-bg"> // <div class="range-bg">
<div class="range-process-box"> // <div class="range-process-box">
<div class="range-process"></div> // <div class="range-process"></div>
</div> // </div>
</div> // </div>
<div class="range-node-box"> // <div class="range-node-box">
<span class="range-node-text">0%</span> // <span class="range-node-text">0%</span>
<span class="range-node-text">100%</span> // <span class="range-node-text">100%</span>
<div class="range-node-active"><span class="range-node-active-text">0%</span></div> // <div class="range-node-active"><span class="range-node-active-text">0%</span></div>
</div> // </div>
<input class="progress-input" type="range" max="100" min="0" step="0.01"> // <input class="progress-input" type="range" max="100" min="0" step="0.01">
</div> // </div>
</div> // </div>
</div> // </div>
</div> // </div>
<span class="custom-divider"></span> // <span class="custom-divider"></span>
` // `
_DialogObject.contentAppChild(contentElm) // _DialogObject.contentAppChild(contentElm)
sdk.viewer.scene.screenSpaceCameraController.enableTranslate = false; sdk.viewer.scene.screenSpaceCameraController.enableTranslate = false;
sdk.viewer.scene.screenSpaceCameraController.enableTilt = false; sdk.viewer.scene.screenSpaceCameraController.enableTilt = false;
@ -210,28 +218,30 @@ async function ScreenShotHD(sdk, options = {}, cd = () => { }) {
value: i value: i
}) })
} }
progressInputElm = document.getElementsByClassName('progress-input')[0] // progressInputElm = document.getElementsByClassName('progress-input')[0]
progressBarElm = document.getElementsByClassName('range-process')[0] // progressBarElm = document.getElementsByClassName('range-process')[0]
rangeNodeActive = contentElm.getElementsByClassName('range-node-active')[0] // rangeNodeActive = contentElm.getElementsByClassName('range-node-active')[0]
rangeNodeActiveText = contentElm.getElementsByClassName('range-node-active-text')[0] // rangeNodeActiveText = contentElm.getElementsByClassName('range-node-active-text')[0]
let scaleDataLegpObject = legp(_DialogObject._element.content.getElementsByClassName('scale-box')[0], ".scale") // let scaleDataLegpObject = legp(_DialogObject._element.content.getElementsByClassName('scale-box')[0], ".scale")
if (scaleDataLegpObject) { // if (scaleDataLegpObject) {
scaleDataLegpObject.legp_search(scaleData) // scaleDataLegpObject.legp_search(scaleData)
let scaleDataLegpElm = _DialogObject._element.content.getElementsByClassName('scale')[0].getElementsByTagName('input')[0] // let scaleDataLegpElm = _DialogObject._element.content.getElementsByClassName('scale')[0].getElementsByTagName('input')[0]
scale = scaleData[0].value // scale = scaleData[0].value
scaleDataLegpObject.legp_searchActive(scaleData[0].value) // scaleDataLegpObject.legp_searchActive(scaleData[0].value)
scaleDataLegpElm.value = scaleData[0].value // scaleDataLegpElm.value = scaleData[0].value
scaleDataLegpElm.addEventListener('input', () => { // scaleDataLegpElm.addEventListener('input', () => {
for (let i = 0; i < scaleData.length; i++) { // for (let i = 0; i < scaleData.length; i++) {
if (scaleData[i].value == scaleDataLegpElm.value) { // if (scaleData[i].value == scaleDataLegpElm.value) {
scale = scaleData[i].value // scale = scaleData[i].value
_DialogObject._element.content.getElementsByClassName('output-width')[0].innerHTML = sdk.viewer.canvas.width * scale // _DialogObject._element.content.getElementsByClassName('output-width')[0].innerHTML = sdk.viewer.canvas.width * scale
_DialogObject._element.content.getElementsByClassName('output-height')[0].innerHTML = sdk.viewer.canvas.height * scale // _DialogObject._element.content.getElementsByClassName('output-height')[0].innerHTML = sdk.viewer.canvas.height * scale
break // break
} // }
} // }
}) // })
} // }
class startScreenShot { class startScreenShot {
constructor() { constructor() {
@ -498,9 +508,10 @@ async function ScreenShotHD(sdk, options = {}, cd = () => { }) {
for (const key in progress) { for (const key in progress) {
totalProgress = totalProgress + progress[key].value totalProgress = totalProgress + progress[key].value
} }
progressBarElm.style.width = totalProgress * 0.99 + '%'; // progressBarElm.style.width = totalProgress * 0.99 + '%';
rangeNodeActive.style.left = totalProgress * 0.99 + '%'; // rangeNodeActive.style.left = totalProgress * 0.99 + '%';
rangeNodeActiveText.innerHTML = Math.floor(totalProgress * 0.99 * 100) / 100 + '%'; // rangeNodeActiveText.innerHTML = Math.floor(totalProgress * 0.99 * 100) / 100 + '%';
cd({ width: totalProgress * 0.99, left: totalProgress * 0.99, value: Math.floor(totalProgress * 0.99 * 100) / 100 })
if (count === (MaxTileX - MinTileX + 1) * (MaxTileY - MinTileY + 1)) { if (count === (MaxTileX - MinTileX + 1) * (MaxTileY - MinTileY + 1)) {
let ctx = canvas.getContext('2d'); let ctx = canvas.getContext('2d');
let cloneCanvas = canvas.cloneNode(true); let cloneCanvas = canvas.cloneNode(true);
@ -525,10 +536,11 @@ async function ScreenShotHD(sdk, options = {}, cd = () => { }) {
tempCanvas.width = totalCanvas.width / scale tempCanvas.width = totalCanvas.width / scale
tempCanvas.height = totalCanvas.height / scale tempCanvas.height = totalCanvas.height / scale
tempCtx.drawImage(totalCanvas, 0, 0, tempCanvas.width, tempCanvas.height); tempCtx.drawImage(totalCanvas, 0, 0, tempCanvas.width, tempCanvas.height);
MapPrint(sdk, tempCanvas.toDataURL('image/jpeg', 0.95), rectangle, imgBlobData) new MapPrint(sdk, tempCanvas.toDataURL('image/jpeg', 0.95), rectangle, imgBlobData, params.modify)
progressBarElm.style.width = '100%'; // progressBarElm.style.width = '100%';
rangeNodeActive.style.left = '100%'; // rangeNodeActive.style.left = '100%';
rangeNodeActiveText.innerHTML = '100%'; // rangeNodeActiveText.innerHTML = '100%';
cd({ value: 100 })
_this.state = false _this.state = false
} }
} }
@ -548,10 +560,11 @@ async function ScreenShotHD(sdk, options = {}, cd = () => { }) {
tempCtx.drawImage(canvas, 0, 0, tempCanvas.width, tempCanvas.height); tempCtx.drawImage(canvas, 0, 0, tempCanvas.width, tempCanvas.height);
// canvas.width = canvas.width / scale // canvas.width = canvas.width / scale
// canvas.height = canvas.height / scale // canvas.height = canvas.height / scale
MapPrint(sdk, tempCanvas.toDataURL('image/jpeg', 0.95), rectangle, imgBlobData) new MapPrint(sdk, tempCanvas.toDataURL('image/jpeg', 0.95), rectangle, imgBlobData, params.modify)
progressBarElm.style.width = '100%'; // progressBarElm.style.width = '100%';
rangeNodeActive.style.left = '100%'; // rangeNodeActive.style.left = '100%';
rangeNodeActiveText.innerHTML = '100%'; // rangeNodeActiveText.innerHTML = '100%';
cd({ value: 100 })
_this.state = false _this.state = false
} }
} }
@ -706,6 +719,8 @@ async function ScreenShotHD(sdk, options = {}, cd = () => { }) {
} }
} }
startScreenShotObject = new startScreenShot()
} }
export { ScreenShot, ScreenShotHD } export { ScreenShot, ScreenShotHD }

View File

@ -117,7 +117,6 @@ class TextBox extends Base {
// alt: height // alt: height
} }
let posi = Cesium.Cartesian3.fromDegrees(longitude, latitude, cartographic.height) let posi = Cesium.Cartesian3.fromDegrees(longitude, latitude, cartographic.height)
that.handler = function () { that.handler = function () {
const position = Cesium.SceneTransforms.wgs84ToWindowCoordinates( const position = Cesium.SceneTransforms.wgs84ToWindowCoordinates(
that.sdk.viewer.scene, posi that.sdk.viewer.scene, posi
@ -150,7 +149,6 @@ class TextBox extends Base {
let that = this let that = this
that.sdk.viewer.scene.postRender.removeEventListener(that.handler); that.sdk.viewer.scene.postRender.removeEventListener(that.handler);
let posi = Cesium.Cartesian3.fromDegrees(position.lng, position.lat, position.alt) let posi = Cesium.Cartesian3.fromDegrees(position.lng, position.lat, position.alt)
that.handler = function () { that.handler = function () {
const position = Cesium.SceneTransforms.wgs84ToWindowCoordinates( const position = Cesium.SceneTransforms.wgs84ToWindowCoordinates(
that.sdk.viewer.scene, posi that.sdk.viewer.scene, posi

View File

@ -472,8 +472,10 @@ class YJEarth {
_this.isLeftClick = true _this.isLeftClick = true
_this.entityMap.get(_this.clickTextDom.id).isClick(movement.position, _this.clickTextDom.id) _this.entityMap.get(_this.clickTextDom.id).isClick(movement.position, _this.clickTextDom.id)
_this.blurFun && _this.clickTextDom.querySelector('textarea').removeEventListener('blur', _this.blurFun)
_this.blurFun = () => { _this.blurFun = () => {
_this.entityMap.get(_this.clickTextDom.id).isClick((movement && movement.position) || null, _this.clickTextDom.id) _this.entityMap.get(_this.clickTextDom.id).isClick((movement && movement.position) || null, _this.clickTextDom.id)
_this.entityMap.get(_this.clickTextDom.id).getwords(_this.clickTextDom.getElementsByTagName('textarea')[0].value) _this.entityMap.get(_this.clickTextDom.id).getwords(_this.clickTextDom.getElementsByTagName('textarea')[0].value)
} }
_this.clickTextDom.querySelector('textarea').addEventListener('blur', _this.blurFun) _this.clickTextDom.querySelector('textarea').addEventListener('blur', _this.blurFun)
@ -531,7 +533,10 @@ class YJEarth {
_this.clickTextDom.removeEventListener('mousedown', mousedown); _this.clickTextDom.removeEventListener('mousedown', mousedown);
_this.viewer._element.removeEventListener('mousemove', mousemove); _this.viewer._element.removeEventListener('mousemove', mousemove);
_this.viewer._element.removeEventListener('mouseup', mouseup); _this.viewer._element.removeEventListener('mouseup', mouseup);
_this.entityMap.get(_this.clickTextDom.id).getwords(_this.clickTextDom.getElementsByTagName('textarea')[0].value) // if (!returnMsg) {
// _this.entityMap.get(_this.clickTextDom.id).getwords(_this.clickTextDom.getElementsByTagName('textarea')[0].value)
// returnMsg = true
// }
_this.clickTextDom.style['pointer-events'] = 'none' _this.clickTextDom.style['pointer-events'] = 'none'
_this.clickTextDom = undefined _this.clickTextDom = undefined