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