cesium获取屏幕范围,可视范围


viewer.scene.postRender.addEventListener(function() {
            var cameraPosition = viewer.camera.positionCartographic;
            var height = cameraPosition.height;

            console.log("当前相机高度: " + height.toFixed(2) + " meters");

         

            // 获取相机覆盖的地理区域
            var corners = getCorners(viewer.camera);
            console.log("相机可视范围---视锥体-->", corners);
        });

function getCorners(camera) {
            var ellipsoid = viewer.scene.globe.ellipsoid;
            var canvas = viewer.canvas;
            var width = canvas.clientWidth;
            var height = canvas.clientHeight;

            var bottomLeft = camera.getPickRay(new Cesium.Cartesian2(0, height));
            var bottomRight = camera.getPickRay(new Cesium.Cartesian2(width, height));
            var topLeft = camera.getPickRay(new Cesium.Cartesian2(0, 0));
            var topRight = camera.getPickRay(new Cesium.Cartesian2(width, 0));

            var bottomLeftCartographic = ellipsoid.cartesianToCartographic(bottomLeft.origin);
            var bottomRightCartographic = ellipsoid.cartesianToCartographic(bottomRight.origin);
            var topLeftCartographic = ellipsoid.cartesianToCartographic(topLeft.origin);
            var topRightCartographic = ellipsoid.cartesianToCartographic(topRight.origin);

            return {
                bottomLeft: {
                    longitude: Cesium.Math.toDegrees(bottomLeftCartographic.longitude),
                    latitude: Cesium.Math.toDegrees(bottomLeftCartographic.latitude)
                },
                bottomRight: {
                    longitude: Cesium.Math.toDegrees(bottomRightCartographic.longitude),
                    latitude: Cesium.Math.toDegrees(bottomRightCartographic.latitude)
                },
                topLeft: {
                    longitude: Cesium.Math.toDegrees(topLeftCartographic.longitude),
                    latitude: Cesium.Math.toDegrees(topLeftCartographic.latitude)
                },
                topRight: {
                    longitude: Cesium.Math.toDegrees(topRightCartographic.longitude),
                    latitude: Cesium.Math.toDegrees(topRightCartographic.latitude)
                }
            };
        }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容