Cesium 中阻止鏡頭飛至地表以下


Cesium 鏡頭飛至地表下后會看到破損的地表,影響用戶體驗,github上有人給出了解決方法,記錄如下:

var viewer = new Cesium.Viewer('cesiumContainer');

var minPitch = -Cesium.Math.PI_OVER_TWO;
var maxPitch = 0;
var minHeight = 200;

viewer.camera.changed.addEventListener(
    function() {
        if (viewer.camera._suspendTerrainAdjustment && viewer.scene.mode === Cesium.SceneMode.SCENE3D) {
            viewer.camera._suspendTerrainAdjustment = false;
            viewer.camera._adjustHeightForTerrain();
        }
        
        // Keep camera in a reasonable pitch range
        var pitch = viewer.camera.pitch;

        if (pitch > maxPitch || pitch < minPitch) {
            viewer.scene.screenSpaceCameraController.enableTilt = false;

            // clamp the pitch
            if(pitch > maxPitch ) { 
                pitch = maxPitch; 
            } else if(pitch < minPitch) {
                pitch = minPitch;
            }

            var destination = Cesium.Cartesian3.fromRadians(
                viewer.camera.positionCartographic.longitude,
                viewer.camera.positionCartographic.latitude,
                Math.max(viewer.camera.positionCartographic.height, minHeight));

            viewer.camera.setView({
                destination: destination,
                orientation: { pitch: pitch }
            });
            viewer.scene.screenSpaceCameraController.enableTilt = true;
        }
    }
);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM