cesium常用設置【轉】


https://blog.csdn.net/D_Walker/article/details/82188514

1.加載線上cesium代碼
<link href="http://cesiumjs.org/releases/1.20/Build/Cesium/Widgets/widgets.css" rel="stylesheet"/>
<script src="http://cesiumjs.org/releases/1.20/Build/Cesium/Cesium.js"></script>

2.默認情況下所加載的GLTF模型朝向東方。但是我們可以通過Entity.orientation屬性指定一個四元組來控制模型的方向

var viewer = new Cesium.Viewer('cesiumContainer');
var position = Cesium.Cartesian3.fromDegrees(-123.0744619, 44.0503706);
var heading = Cesium.Math.toRadians(45.0);
var pitch = Cesium.Math.toRadians(15.0);
var roll = Cesium.Math.toRadians(0.0);
var orientation = Cesium.Transforms.headingPitchRollQuaternion(position, heading, pitch, roll);

var entity = viewer.entities.add({
    position : position,
    orientation : orientation,
    model : {
        uri : '../../SampleData/models/CesiumGround/Cesium_Ground.gltf'
    }
});
viewer.trackedEntity = entity;

3.禁用默認的事件處理程序

 var viewer = new Cesium.Viewer('cesiumContainer',{
            baseLayerPicker : false,
            imageryProvider : new Cesium.ArcGisMapServerImageryProvider({
            url :'http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer'
            })
        });
        var scene = viewer.scene;
        var ellipsoid = viewer.scene.globe.ellipsoid;  //獲取地球球體對象

        //禁用默認的事件處理程序
        //如果為真,則允許用戶旋轉相機。如果為假,相機將鎖定到當前標題。此標志僅適用於2D和3D
        scene.screenSpaceCameraController.enableRotate = false;
        //如果為真,則允許用戶平移地圖。如果為假,相機將保持鎖定在當前位置。此標志僅適用於2D和Columbus視圖模式
        scene.screenSpaceCameraController.enableTranslate = false;
        //如果為真,則允許用戶放大和縮小。如果為假,相機將鎖定到距離橢圓體的當前距離。
        scene.screenSpaceCameraController.enableZoom = false;
        //如果為真,則允許用戶傾斜相機。如果為假,相機將鎖定到當前標題。這個標志只適用於3D和哥倫布視圖。
        scene.screenSpaceCameraController.enableTilt = false;
        //如果為真,則允許用戶使用免費外觀。如果為假,攝像機視圖方向只能通過轉換或旋轉進行更改。此標志僅適用於3D和哥倫布視圖模式。
        scene.screenSpaceCameraController.enableLook = false;

4.隱藏對應的實體模型

tileset.style = new Cesium.Cesium3DTileStyle({
            color: {
                conditions: [
                    ["${ID} === '528851'||${ID} === '554086'", "rgba(${red}, ${green}, ${blue}, 0)"],
                    ["true","rgba(${red}, ${green}, ${blue}, 1)"]
                ]
            }
        });

5.對cesium的幫組按鈕內容進行漢化

function navigationHelpButtonLang() {
    var viewer = this.viewer;
    if (viewer.navigationHelpButton) {
        viewer.navigationHelpButton.viewModel.tooltip = "操作指南";

        var clickHelper = viewer.navigationHelpButton.container.getElementsByClassName("cesium-click-navigation-help")[0];
        var touchHelper = viewer.navigationHelpButton.container.getElementsByClassName("cesium-touch-navigation-help")[0];

        var button = viewer.navigationHelpButton.container.getElementsByClassName("cesium-navigation-button-right")[0]
        button.innerHTML = button.innerHTML.replace(">Touch", ">手勢");
        button = viewer.navigationHelpButton.container.getElementsByClassName("cesium-navigation-button-left")[0]
        button.innerHTML = button.innerHTML.replace(">Mouse", ">鼠標");

        var click_help_pan = clickHelper.getElementsByClassName("cesium-navigation-help-pan")[0];
        click_help_pan.innerHTML = "平移";
        var click_help_pan_details = click_help_pan.parentNode.getElementsByClassName("cesium-navigation-help-details")[0];
        click_help_pan_details.innerHTML = "按下左鍵 + 拖動";

        var click_help_zoom = clickHelper.getElementsByClassName("cesium-navigation-help-zoom")[0];
        click_help_zoom.innerHTML = "旋轉";
        click_help_zoom.parentNode.getElementsByClassName("cesium-navigation-help-details")[0].innerHTML = "按下右鍵+拖動";
        click_help_zoom.parentNode.getElementsByClassName("cesium-navigation-help-details")[1].innerHTML = "";

        var click_help_rotate = clickHelper.getElementsByClassName("cesium-navigation-help-rotate")[0];
        click_help_rotate.innerHTML = "縮放";
        click_help_rotate.parentNode.getElementsByClassName("cesium-navigation-help-details")[0].innerHTML = "滾動鼠標滾輪";
        click_help_rotate.parentNode.getElementsByClassName("cesium-navigation-help-details")[1].innerHTML = "";

        //觸屏操作
        var touch_help_pan = touchHelper.getElementsByClassName("cesium-navigation-help-pan")[0];
        touch_help_pan.innerHTML = "平移";
        touch_help_pan.parentNode.getElementsByClassName("cesium-navigation-help-details")[0].innerHTML = "單指拖動";

        var touch_help_zoom = touchHelper.getElementsByClassName("cesium-navigation-help-zoom")[0];
        touch_help_zoom.innerHTML = "縮放";
        touch_help_zoom.parentNode.getElementsByClassName("cesium-navigation-help-details")[0].innerHTML = "雙指捏合";

        var touch_help_tilt = touchHelper.getElementsByClassName("cesium-navigation-help-rotate")[0];
        touch_help_tilt.innerHTML = "俯仰";
        touch_help_tilt.parentNode.getElementsByClassName("cesium-navigation-help-details")[0].innerHTML = "雙指同向拖動";

        var touch_help_rotate = touchHelper.getElementsByClassName("cesium-navigation-help-tilt")[0];
        touch_help_rotate.innerHTML = "旋轉";
        touch_help_rotate.parentNode.getElementsByClassName("cesium-navigation-help-details")[0].innerHTML = "雙指反向拖動";

    }

}

6.更改cesium默認的鼠標操作以及對調試工具的設置

  viewer.scene.screenSpaceCameraController.zoomEventTypes = [Cesium.CameraEventType.WHEEL, Cesium.CameraEventType.PINCH];
  viewer.scene.screenSpaceCameraController.tiltEventTypes = [Cesium.CameraEventType.PINCH, Cesium.CameraEventType.RIGHT_DRAG];
  var imageryProviderViewModels = viewer.baseLayerPicker.viewModel.imageryProviderViewModels;
    viewer.baseLayerPicker.viewModel.selectedImagery = imageryProviderViewModels[3];
    viewer.extend(Cesium.viewerCesiumInspectorMixin);
    viewer.cesiumInspector.container.style.display = "none";
    viewer.scene.debugShowFramesPerSecond = true;
    document.addEventListener('keydown', function (event) {
        var e = event || window.event || arguments.callee.caller.arguments[0];
        if (e) {
            switch (e.keyCode) {
                // case 82: //R鍵查看地形三角網
                //     if (viewer.cesiumInspector) {
                //         viewer.cesiumInspector.viewModel.wireframe = !viewer.cesiumInspector.viewModel.wireframe;
                //     }
                //     break;
                case 70: //F鍵查看幀率
                    viewer.scene.debugShowFramesPerSecond = !viewer.scene.debugShowFramesPerSecond;
                    break;
                default:
            }
        }
    });

7.手機加載或者pad加載時提高畫質。

if(Cesium.FeatureDetection.supportsImageRenderingPixelated()){
    viewer.resolutionScale = window.devicePixelRatio;
}
原文鏈接:https://blog.csdn.net/D_Walker/article/details/82188514


免責聲明!

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



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