在cesium1.92版本, when.js 被原生 Promise API 代替。Cesium.when 被废弃。下面分享原生Promise实现cesium场景截图功能。
function screenshot() {
const screenshot = new Promise<string>((resolve, reject) => {
viewer.render()
const image = viewer.scene.canvas.toDataURL('image/png')
resolve(image)
})
screenshot.then((base64data: string) => {
const image = new Image()
image.src = base64data
function coverImageToCanvas(image: HTMLImageElement) {
const canvas = document.createElement('canvas')
canvas.width = image.width
canvas.height = image.height
canvas.getContext('2d')!.drawImage(image, 0, 0)
}
image.onload = function () {
const canvas = coverImageToCanvas(image)
const url = canvas.toDataURL('image/png')
const a = document.createElement('a')
const event = new MouseEvent('click')
const currentTime = new Date(new Date().getTime()).toLocaleString()
a.download = `快照${currentTime}.png`
a.href = url
a.dispatchEvent(event)
}
})
}