/** * @name: global * @author: Administrator * @date: 2023-12-01 14:15 * @description:global * @update: 2023-12-01 14:15 */ /*获取当前视角*/ import MouseEvent from '../Event/index' import Tools from "../Tools"; import { Proj } from "../Tools/proj"; import { getTheme, setTheme } from "../Obj/Element/theme"; import { setActiveViewer as setMultiViewportActiveViewer } from './MultiViewportMode' import { setActiveViewer as setSplitActiveViewer, getSdk } from './SplitScreen' import { updateCluster } from './cluster/cluster' let coordinateSystem = 'EPSG:4326' let _cartesian let GroundCover = false let bimPickObject = {} let containerObject = {} let rotateAroundObject = {} function getCurrentView(sdk) { let tools = new Tools() let viewer = sdk.viewer return JSON.parse(JSON.stringify({ // heading: viewer.camera.heading, // pitch: viewer.camera.pitch, // roll: viewer.camera.roll, position: tools.cartesian3Towgs84(viewer.camera.position, viewer), orientation: { heading: Cesium.Math.toDegrees(viewer.camera.heading), pitch: Cesium.Math.toDegrees(viewer.camera.pitch), roll: Cesium.Math.toDegrees(viewer.camera.roll) } })) } /*设置默认视角*/ function setDefaultView(sdk, options) { let viewer = sdk.viewer if (options) { viewer.CAMERA_DEFAULT_VIEW_RECTANGLE = { destination: options.destination || {}, orientation: options.orientation || {} } } else { viewer.CAMERA_DEFAULT_VIEW_RECTANGLE = undefined //设置cesium的默认视角 Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees( //西边的经度 89.5, //南边的纬度 10.4, //东边的经度 110.4, //北边的维度 61.2 ) } } /*定位到指定视角*/ async function flyTo(sdk, options, duration = 3) { let tools = new Tools(sdk) let destination let orientation = options.orientation if (options.position) { if (options.position.alt !== 0 && !options.position.alt) { options.position.alt = await tools.getClampToHeight(options.position) } let h = 0 if (!orientation) { h = 500 } destination = Cesium.Cartesian3.fromDegrees(options.position.lng, options.position.lat, options.position.alt + h) } else { let bbox = tools.cal_envelope(options.positions) destination = new Cesium.Rectangle( Cesium.Math.toRadians(bbox[3][0]), Cesium.Math.toRadians(bbox[3][1]), Cesium.Math.toRadians(bbox[1][0]), Cesium.Math.toRadians(bbox[1][1]) ) } closeRotateAround(sdk) sdk.viewer.camera.flyTo({ destination, duration, orientation, complete: options.complete, }) } /*相机锁定*/ function CameraController(sdk, status = true) { if (!sdk || !sdk.viewer) { return } let viewer = sdk.viewer viewer.scene.screenSpaceCameraController.enableRotate = status; viewer.scene.screenSpaceCameraController.enableTranslate = status; viewer.scene.screenSpaceCameraController.enableZoom = status; viewer.scene.screenSpaceCameraController.enableTilt = status; viewer.scene.screenSpaceCameraController.enableLook = status; } /*控件显隐*/ function CesiumContainer(sdk, options) { if (!sdk || !sdk.viewer) { return } containerObject[sdk.viewer._element.className] || (containerObject[sdk.viewer._element.className] = {}) containerObject[sdk.viewer._element.className].event && containerObject[sdk.viewer._element.className].event.destroy() let tools = new Tools() let element = sdk.viewer._element let proj = sdk.proj for (let key in options) { switch (key) { case 'compass': let compass = element.getElementsByClassName('compass')[0] let navigation = element.getElementsByClassName('navigation-controls')[0] if (options[key]) { compass && (compass.style.display = 'block') navigation && (navigation.style.display = 'flex') } else { compass && (compass.style.display = 'none') navigation && (navigation.style.display = 'none') } break; case 'legend': let distanceLegend = element.getElementsByClassName('distance-legend')[0] if (options[key]) { distanceLegend && (distanceLegend.parentNode.style.display = 'block') } else { distanceLegend && (distanceLegend.parentNode.style.display = 'none') } break; case 'info': let infoElm = element.getElementsByClassName('cesium-info')[0] if (options[key]) { if (infoElm) { update() infoElm.style.display = 'block' } else { infoElm = document.createElement('div'); infoElm.className = "cesium-info" infoElm.style.position = 'absolute'; infoElm.style.bottom = '32px'; infoElm.style.right = '240px'; infoElm.style['font-size'] = '14px'; infoElm.style['background-color'] = 'rgba(47,53,60,.8)'; infoElm.style.color = '#fff'; infoElm.style.padding = '4px 10px'; infoElm.style['border-radius'] = '18px'; if (coordinateSystem === 'EPSG:4326') { infoElm.innerHTML = ` 经度:- 纬度:- 海拔高度:- ` } else { infoElm.innerHTML = ` x:- y:- z:- ` } sdk.viewer._element.appendChild(infoElm) } let event = new MouseEvent(sdk) containerObject[sdk.viewer._element.className].event = event event.mouse_move((movement, cartesian) => { _cartesian = cartesian update() }) function update() { if (!_cartesian) { return } let position = tools.cartesian3Towgs84(_cartesian, sdk.viewer) if (coordinateSystem === 'EPSG:4326') { infoElm.innerHTML = ` 经度:${Number(position.lng.toFixed(6))}° 纬度:${Number(position.lat.toFixed(6))}° 海拔高度:${Number(position.alt.toFixed(2))}米 ` } else { let result = proj.convert([{ x: position.lng, y: position.lat, z: position.alt }], 'EPSG:4326', coordinateSystem) infoElm.innerHTML = ` x:${Number(result.points[0].x.toFixed(6))} y:${Number(result.points[0].y.toFixed(6))} z:${Number(result.points[0].z.toFixed(6))} ` } } } else { infoElm && (infoElm.style.display = 'none') } break; case 'frame': if (options[key]) { sdk.viewer.scene.debugShowFramesPerSecond = true; setTimeout(() => { let cesiumWidgetContainerElm = sdk.viewer._element.getElementsByClassName('cesium-viewer-cesiumWidgetContainer')[0] let defaultContainer = cesiumWidgetContainerElm.getElementsByClassName('cesium-performanceDisplay-defaultContainer')[0] if (defaultContainer) { cesiumWidgetContainerElm.appendChild(defaultContainer) } }, 50); } else { sdk.viewer.scene.debugShowFramesPerSecond = false; } break; } } // let compass = element.getElementsByClassName('compass')[0] // let navigation = element.getElementsByClassName('navigation-controls')[0] // let distanceLegend = element.getElementsByClassName('distance-legend')[0] // if(status) { // compass && (compass.style.display = 'block') // navigation && (navigation.style.display = 'block') // distanceLegend && (distanceLegend.style.display = 'block') // } // else { // compass && (compass.style.display = 'none') // navigation && (navigation.style.display = 'none') // distanceLegend && (distanceLegend.style.display = 'none') // viewer.cesiumNavigation.distanceLegendViewModel.destroy() // } } /*设置广告牌默认图标*/ function setBillboardDefaultUrl(url, name) { if (name) { name = 'billboard_default_url_' + name } else { name = 'billboard_default_url' } localStorage.setItem(name, url); } /*获取广告牌默认图标*/ function getBillboardDefaultUrl(name) { if (name) { name = 'billboard_default_url_' + name } else { name = 'billboard_default_url' } return localStorage.getItem(name); } /*设置高度参考*/ function setGroundCover(sdk, status) { GroundCover = status ? true : false updateCluster(sdk.viewer) } /*获取高度参考*/ function getGroundCover() { return GroundCover } function setBimPickStatus(sdk, status) { if (!sdk || !sdk.viewer) { return } bimPickObject[sdk.viewer._element.className] || (bimPickObject[sdk.viewer._element.className] = {}) bimPickObject[sdk.viewer._element.className].status = status if (bimPickObject[sdk.viewer._element.className].MoveHandler) { bimPickObject[sdk.viewer._element.className].MoveHandler.destroy() } if (!status) { return } bimPickObject[sdk.viewer._element.className].MoveHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas) bimPickObject[sdk.viewer._element.className].MoveHandler.setInputAction(function (movement) { const pick = sdk.viewer.scene.pick(movement.endPosition); let selectedId = bimPickObject[sdk.viewer._element.className].selectedId let that = sdk.entityMap.get(bimPickObject[sdk.viewer._element.className].id) // if (selectedFeatureId) { // 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 (that) { if (that.features.has(selectedId)) { let features = that.features.get(selectedId).features for (let key in features) { if (features[key].content._model) { let color = features[key].customColor || Cesium.Color.fromCssColorString('#fff') features[key].color = Cesium.Color.fromCssColorString(`rgba(${Cesium.Color.floatToByte(color.red)},${Cesium.Color.floatToByte(color.green)},${Cesium.Color.floatToByte(color.blue)},${color.alpha * ((features[key].customAlpha || features[key].customAlpha === 0) ? features[key].customAlpha : 1)})`) } } } } if (pick && pick.content) { let obj = sdk.getIncetance(pick.content.tileset.id) if (obj.type === 'bim') { if (pick.primitive && pick.primitive.id) { let that = sdk.entityMap.get(pick.primitive.id) selectedId = pick.getProperty('id') if (that.features.has(selectedId)) { let features = that.features.get(selectedId).features for (let key in features) { if (features[key].content._model) { features[key].color = Cesium.Color.fromCssColorString('#ffeb3b') } } } bimPickObject[sdk.viewer._element.className].id = pick.primitive.id bimPickObject[sdk.viewer._element.className].selectedId = selectedId } } else { pick.primitive.id = null } } }, Cesium.ScreenSpaceEventType.MOUSE_MOVE) } function getBimPickStatus(sdk) { if (!sdk || !sdk.viewer) { return } return bimPickObject[sdk.viewer._element.className] ? bimPickObject[sdk.viewer._element.className].status : false } /* 围绕坐标旋转 */ function rotateAround(sdk, position) { if (!sdk || !sdk.viewer) { return } setActiveViewer(0) sdk.viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY); // 关闭Controller sdk.entityMap.forEach((item) => { item.editObj && item.editObj.destroy() item.ControllerObject && item.ControllerObject.destroy() }) rotateAroundObject[sdk.viewer._element.className] || (rotateAroundObject[sdk.viewer._element.className] = {}) rotateAroundObject[sdk.viewer._element.className].animate && TWEEN.remove(rotateAroundObject[sdk.viewer._element.className].animate) rotateAroundObject[sdk.viewer._element.className].event && rotateAroundObject[sdk.viewer._element.className].event.destroy() if (!position) { CameraController(sdk, true) return } let point = Cesium.Cartesian3.fromDegrees(position.lng, position.lat, position.alt) let angle = Cesium.Math.toDegrees(sdk.viewer.camera.heading) let range = Cesium.Cartesian3.distance(sdk.viewer.camera.position, point); CameraController(sdk, false) let pitch = sdk.viewer.camera.pitch let degrees = Cesium.Math.toDegrees(pitch) if (degrees < -89.99) { pitch = Cesium.Math.toRadians(-89.99) } rotateAroundObject[sdk.viewer._element.className].animate = new TWEEN.Tween({ angle: angle }).to({ angle: angle - 360 }, 30000).easing(TWEEN.Easing.Linear.None).repeat(Infinity).onUpdate(async (r, a) => { if (!sdk.viewer) { TWEEN.remove(rotateAroundObject[sdk.viewer._element.className].animate) return } sdk.viewer.camera.lookAt( point, new Cesium.HeadingPitchRange(Cesium.Math.toRadians(r.angle), pitch, range) ) sdk.viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY); }).start() let event = new MouseEvent(sdk) rotateAroundObject[sdk.viewer._element.className].event = event event.mouse_left_down(() => { rotateAroundObject[sdk.viewer._element.className].animate && TWEEN.remove(rotateAroundObject[sdk.viewer._element.className].animate) rotateAroundObject[sdk.viewer._element.className].event && rotateAroundObject[sdk.viewer._element.className].event.destroy() CameraController(sdk, true) sdk.viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY); }) } /* 关闭围绕坐标旋转 */ function closeRotateAround(sdk) { if (!sdk || !sdk.viewer) { return } if (rotateAroundObject[sdk.viewer._element.className]) { rotateAroundObject[sdk.viewer._element.className].animate && TWEEN.remove(rotateAroundObject[sdk.viewer._element.className].animate) rotateAroundObject[sdk.viewer._element.className].event && rotateAroundObject[sdk.viewer._element.className].event.destroy() CameraController(sdk, true) sdk.viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY); } } function closeViewFollow(sdk) { if (sdk && sdk.entityMap) { let entityMap = sdk.entityMap for (let [key, value] of entityMap) { if (value.type === 'TrajectoryMotion' && value.viewFollow) { value.viewFollow = false } } } } /* 方里网状态开关 */ function FlwStatusSwitch(sdk, status) { if(!sdk) { return } let layer let sdkD = getSdk().sdkD if(sdkD && sdk !== sdkD) { FlwStatusSwitch(sdkD, status) } for (let i = 0; i < sdk.viewer.imageryLayers._layers.length; i++) { if (sdk.viewer.imageryLayers._layers[i]._imageryProvider && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'flw') { layer = sdk.viewer.imageryLayers._layers[i] break } } if (layer) { sdk.viewer.imageryLayers.remove(layer) } if (status) { sdk.viewer.imageryLayers.addImageryProvider(new Cesium.TileCoordinatesImageryProviderFlw( { tileWidth: 128, tileHeight: 128, } )); } } function getFlwStatus(sdk) { let status = false for (let i = 0; i < sdk.viewer.imageryLayers._layers.length; i++) { if (sdk.viewer.imageryLayers._layers[i]._imageryProvider && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'flw') { status = true break } } return status } /* 经纬网状态开关 */ function JwwStatusSwitch(sdk, status) { if(!sdk) { return } let layer let sdkD = getSdk().sdkD if(sdkD && sdk !== sdkD) { JwwStatusSwitch(sdkD, status) } for (let i = 0; i < sdk.viewer.imageryLayers._layers.length; i++) { if (sdk.viewer.imageryLayers._layers[i]._imageryProvider && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'jww') { layer = sdk.viewer.imageryLayers._layers[i] break } } if (layer) { sdk.viewer.imageryLayers.remove(layer) } if (status) { sdk.viewer.imageryLayers.addImageryProvider(new Cesium.TileCoordinatesImageryProviderJww()); } } function getJwwStatus(sdk) { let status = false for (let i = 0; i < sdk.viewer.imageryLayers._layers.length; i++) { if (sdk.viewer.imageryLayers._layers[i]._imageryProvider && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'jww') { status = true break } } return status } function splitScreen2(sdk, status) { let sliderElm = sdk.viewer._element.getElementsByClassName('YJ-custom-slider')[0] let leftElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-left')[0] let rightElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-right')[0] if (sliderElm) { sdk.viewer._element.removeChild(sliderElm) sdk.viewer._element.removeChild(leftElm) sdk.viewer._element.removeChild(rightElm) } if (status) { sliderElm = document.createElement('div'); sliderElm.className = 'YJ-custom-slider' sliderElm.style.position = 'absolute' sliderElm.style.left = '50%' sliderElm.style.top = '0px' leftElm = document.createElement('input'); leftElm.className = 'YJ-custom-checkbox-left' leftElm.type = 'checkbox' leftElm.style.position = 'absolute' leftElm.style.left = 'calc(50% - 50px)' rightElm = document.createElement('input'); rightElm.className = 'YJ-custom-checkbox-right' rightElm.type = 'checkbox' rightElm.style.position = 'absolute' rightElm.style.right = 'calc(50% - 50px)' sdk.viewer._element.appendChild(leftElm) sdk.viewer._element.appendChild(rightElm) leftElm.checked = true leftElm.addEventListener('change', (e) => { if (!e.target.checked) { if (!rightElm.checked) { rightElm.checked = true } } changeEntitySplitStatus() }) rightElm.addEventListener('change', (e) => { if (!e.target.checked) { if (!leftElm.checked) { leftElm.checked = true } } changeEntitySplitStatus() }) sliderElm.addEventListener('mousedown', () => { document.body.addEventListener('mousemove', mousemove) sliderElm.addEventListener('mouseup', () => { document.body.removeEventListener('mousemove', mousemove) }) }) function mousemove(a, b) { if (sdk.viewer._element.getElementsByTagName('canvas')[0] === a.target) { sliderElm.style.left = (a.offsetX / sdk.viewer._element.scrollWidth * 100) + '%' sdk.viewer.scene.splitPosition = a.offsetX / sdk.viewer._element.scrollWidth } } sdk.viewer._element.appendChild(sliderElm) sdk.viewer.scene.splitStatus = status sdk.viewer.scene.splitPosition = 0.5 changeEntitySplitStatus() } else { sdk.viewer.scene.splitPosition = 0 changeEntitySplitStatus(0) sdk.viewer.scene.splitStatus = status } function changeEntitySplitStatus(v) { let value if (v === undefined || v === null) { if (leftElm.checked && rightElm.checked) { value = 0 } else { if (leftElm.checked) { value = -1 } if (rightElm.checked) { value = 1 } } } else { value = v } sdk.entityMap.forEach((item, key) => { if (sdk.viewer.scene.splitStatus) { if (item.entity.billboard) { item.entity.billboard.splitDirection = value } else { item.entity && (item.entity.splitDirection = value) } } console.log() }) } } function splitScreen(sdk, status) { let sliderElm = sdk.viewer._element.getElementsByClassName('YJ-custom-slider')[0] let leftElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-left')[0] let rightElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-right')[0] if (sliderElm) { sdk.viewer._element.removeChild(sliderElm) sdk.viewer._element.removeChild(leftElm) sdk.viewer._element.removeChild(rightElm) } if (status) { sliderElm = document.createElement('div'); sliderElm.className = 'YJ-custom-slider' sliderElm.style.position = 'absolute' sliderElm.style.left = '50%' sliderElm.style.top = '0px' leftElm = document.createElement('input'); leftElm.className = 'YJ-custom-checkbox-left' leftElm.type = 'checkbox' leftElm.style.position = 'absolute' leftElm.style.left = 'calc(50% - 50px)' rightElm = document.createElement('input'); rightElm.className = 'YJ-custom-checkbox-right' rightElm.type = 'checkbox' rightElm.style.position = 'absolute' rightElm.style.right = 'calc(50% - 50px)' sdk.viewer._element.appendChild(leftElm) sdk.viewer._element.appendChild(rightElm) leftElm.checked = true leftElm.addEventListener('change', (e) => { if (!e.target.checked) { if (!rightElm.checked) { rightElm.checked = true } } changeEntitySplitStatus() }) rightElm.addEventListener('change', (e) => { if (!e.target.checked) { if (!leftElm.checked) { leftElm.checked = true } } changeEntitySplitStatus() }) sliderElm.addEventListener('mousedown', () => { document.body.addEventListener('mousemove', mousemove) sliderElm.addEventListener('mouseup', () => { document.body.removeEventListener('mousemove', mousemove) }) }) function mousemove(a, b) { if (sdk.viewer._element.getElementsByTagName('canvas')[0] === a.target) { sliderElm.style.left = (a.offsetX / sdk.viewer._element.scrollWidth * 100) + '%' sdk.viewer.scene.splitPosition = a.offsetX / sdk.viewer._element.scrollWidth } } sdk.viewer._element.appendChild(sliderElm) sdk.viewer.scene.splitStatus = status sdk.viewer.scene.splitPosition = 0.5 changeEntitySplitStatus() } else { sdk.viewer.scene.splitPosition = 0 changeEntitySplitStatus(0) sdk.viewer.scene.splitStatus = status } function changeEntitySplitStatus(v) { let value if (v === undefined || v === null) { if (leftElm.checked && rightElm.checked) { value = 0 } else { if (leftElm.checked) { value = -1 } if (rightElm.checked) { value = 1 } } } else { value = v } sdk.entityMap.forEach((item, key) => { if (sdk.viewer.scene.splitStatus) { if (item.entity.billboard) { item.entity.billboard.splitDirection = value } else { item.entity && (item.entity.splitDirection = value) } } console.log() }) } } function getCoordinateSystem() { return coordinateSystem } function setCoordinateSystem(sdk, epsg) { coordinateSystem = epsg || 'EPSG:4326' 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) if (coordinateSystem === 'EPSG:4326') { infoElm.innerHTML = ` 经度:${Number(position.lng.toFixed(6))}° 纬度:${Number(position.lat.toFixed(6))}° 海拔高度:${Number(position.alt.toFixed(2))}米 ` } else { let result = proj.convert([{ x: position.lng, y: position.lat, z: position.alt }], 'EPSG:4326', coordinateSystem) infoElm.innerHTML = ` x:${Number(result.points[0].x.toFixed(6))} y:${Number(result.points[0].y.toFixed(6))} z:${Number(result.points[0].z.toFixed(6))} ` } } function cameraChanged(sdk, cb) { let tools = new Tools() //设置相机变化的监听事件 let removeChanged = sdk.viewer.camera.changed.addEventListener(percentage => { cb({ position: tools.cartesian3Towgs84(sdk.viewer.camera.position, sdk.viewer), orientation: { heading: sdk.viewer.camera.heading, pitch: sdk.viewer.camera.pitch, roll: sdk.viewer.camera.roll } }) }) return removeChanged } function setMaximumRequestsPerServer(v) { if (typeof v == 'number') Cesium.RequestScheduler.maximumRequestsPerServer = v } /* 键盘事件 */ function setKeyboardEventActive(sdk, status) { if (!sdk) { return } if (status) { sdk.viewer._disableKeyboardEvent = false } else { sdk.viewer._disableKeyboardEvent = true } } function getCesiumIndexedDBMaxSize() { const baseUnit = 1024 * 1024 * 1024 let size = Number(Number(localStorage.getItem('IndexedDBMaxSize')).toFixed(0)) if (isNaN(size) || size < baseUnit) { size = baseUnit } return size } function setCesiumIndexedDBMaxSize(v) { const baseUnit = 1024 * 1024 * 1024 let maxSize = Number(Number(v).toFixed(0)) if (isNaN(maxSize) || maxSize < baseUnit) { maxSize = baseUnit } Cesium.ManageIndexedDB && Cesium.ManageIndexedDB.SetIndexedDBMaxSize(maxSize) localStorage.setItem('IndexedDBMaxSize', maxSize) } function getCesiumManageIndexexDBState() { let state = localStorage.getItem('ManageIndexexDBState') if (state === 'false') { return false } return Boolean(state) } function setCesiumManageIndexexDBState(v) { if (typeof v === "boolean") { Cesium.ManageIndexedDB && Cesium.ManageIndexedDB.SetManageIndexexDBState(v) localStorage.setItem('ManageIndexexDBState', v) } else { console.error("参数必须为boolean") } } function getCesiumIndexedDBCurrentSize() { return Cesium.ManageIndexedDB && Cesium.ManageIndexedDB.GetIndexedDBCurrentSize() } function setActiveViewer(v) { setMultiViewportActiveViewer(v) setSplitActiveViewer(v) } // 设置地球透明度 function enablePerspective(sdk, alpha = 1) { if (!alpha && alpha != 0) { 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 }