Cesium初始化配置和鼠標左鍵旋轉右鍵拖拽事件


1,Cesium 的初始化配置

     var viewer = new Cesium.Viewer('cesiumContainer', {
            animation: false, // 動畫部件
            baseLayerPicker: false, // 基礎圖層部件
            fullscreenButton: false, // 全屏按鈕部件
            vrButton: false, // vr部件
            geocoder: false, // 位置搜索部件
            homeButton: false, // home按鈕
            infoBox: false, // 消息框部件
            sceneModePicker: false, // 二三維切換部件
            selectionIndicator: false,
            timeline: false, // 時間軸部件
            navigationHelpButton: false, // 導航幫助按鈕
            navigationInstructionsInitiallyVisible: false, // 導航說明顯示
            scene3DOnly: true, // 當設置為true時,每個幾何圖形實例將僅以3D形式呈現,以節省GPU內存。
            shouldAnimate: false, // 太陽模擬時鍾時間
            // clockViewModel: new Cesium.ClockViewModel(clock),  // 當shouldAnimate為ture,執行當前設置的時間區間動畫
            // selectedImageryProviderViewModel:{}, // 當前基礎影像圖層,如果設置將使用第一個可用的基礎圖層。僅當“ baseLayerPicker”設置為true時,此值才有效。
            // imageryProviderViewModels: [],  //可以從BaseLayerPicker中選擇的ProviderViewModels數組。僅當“ baseLayerPicker”設置為true時,此值才有效。
            // selectedTerrainProviderViewModel: new Cesium.ProviderViewModel(options) // 當前基礎地形圖層的視圖模型(如果未提供)將使用第一個可用的基礎圖層。僅當“ baseLayerPicker”設置為true時,此值才有效。
            // terrainProviderViewModels: [],   // 可以從BaseLayerPicker中選擇的ProviderViewModels數組。僅當“ baseLayerPicker”設置為true時,此值才有效。
            // imageryProvider: // 加載不同的地圖服務。僅當“ baseLayerPicker”設置為false時,此值才有效。
            // terrainProvider: // 加載地形服務
            // skyBox: false,  // 配置天空盒子或不顯示天空盒子
            // skyAtmosphere: false, // 配置大氣或不顯示大氣
            // fullscreenElement: '',  // 配置全屏按鈕,傳入id或者dom
            useDefaultRenderLoop: true, // 控制是否繼續渲染
            // targetFrameRate:24, // 控制渲染幀數
            showRenderLoopErrors: true, // 報錯是否彈出錯誤
            useBrowserRecommendedResolution: true, // 設置為false使用window.devicePixelRatio屬性
            automaticallyTrackDataSourceClocks: false, // 設置成true,使用公共clock對象,設置false,所有功能使用獨立clock對象
            contextOptions: {}, // 創建場景時,配置webgl
            sceneMode: Cesium.SceneMode.SCENE3D, // 初始化場景為3D、2.5D、2D
            // mapProjection:new GeographicProjection(),   // 使用2D 或者 Columbus View modes 設置地圖投影方式
            //globe: false, // 配置新的地球或隱藏地球
            orderIndependentTranslucency: true, // 如果為true且配置支持,則使用順序無關的透明性。
            creditContainer: document.getElementById('units'),    // 部件容器
            // creditViewport: '', // 提示顯示容器
            // dataSources: new Cesium.DataSourceCollection(), // 小部件數據源設置
            terrainExaggeration: 1.0,   // 誇大地形
            shadows: true,  // 是否打開陰影
            terrainShadows: true,   // 是否打開地形陰影
            mapMode2D: Cesium.MapMode2D.INFINITE_SCROLL,   // 設置2D地圖水平旋轉
            projectionPicker: false,    // 設置為true,  ProjectionPicker部件會被創建,    ProjectionPicker:設置地球最佳視角
            // 如果為真,渲染幀只會在需要時發生,這是由場景中的變化決定的。啟用可以減少你的應用程序的CPU/GPU使用,並且在移動設備上使用更少的電池,但是需要使用Scene#requestRender在這種模式下顯式地渲染一個新幀。在許多情況下,在API的其他部分更改場景后,這是必要的。請參閱使用顯式呈現提高性能。
            // 不是特別明白,應該是提高渲染性能的
            requestRenderMode: true,
            // 如果requestRenderMode為true,這個值定義了在請求渲染之前允許的模擬時間的最大變化。請參閱使用顯式呈現提高性能。
            maximumRenderTimeChange: 0.0
        });
          viewer.scene.requestRenderMode = true;
          viewer.scene.moon.show = false;
          viewer.scene.fog.enabled = false;
          viewer.scene.sun.show = false;
          viewer.scene.skyBox.show = false;
          viewer.cesiumWidget.creditContainer.style.display = "none"; //去水印
 
                    //解決Cesium繪制幾何圖形被高程遮擋問題
          viewer.scene.globe.depthTestAgainstTerrain = true;

  2.鼠標事件調整

    //關閉雙擊事件
      viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(
        Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK
      );
      // 傾斜視圖 鼠標左鍵旋轉
      viewer.scene.screenSpaceCameraController.tiltEventTypes = [
        Cesium.CameraEventType.LEFT_DRAG,
      ];
      // 縮放設置 重新設置縮放成員
      viewer.scene.screenSpaceCameraController.zoomEventTypes = [
        Cesium.CameraEventType.MIDDLE_DRAG,
        Cesium.CameraEventType.WHEEL,
        Cesium.CameraEventType.PINCH,
      ];
      // 平移 添加鼠標右鍵  鼠標右鍵平移
      viewer.scene.screenSpaceCameraController.rotateEventTypes = [
        Cesium.CameraEventType.RIGHT_DRAG,
      ];

  3.鼠標事件監聽

      // 左鍵監聽
      hander.setInputAction((movement) => {
        var pick = viewer.scene.pickPosition(movement.position);
        var pickModel = viewer.scene.pick(movement.position);
        var height = "";
        var lat = "";
        var lng = "";
        if (pick) {
          height = Cesium.Cartographic.fromCartesian(pick).height;
          lat = Cesium.Math.toDegrees(
            Cesium.Cartographic.fromCartesian(pick).latitude
          );
          lng = Cesium.Math.toDegrees(
            Cesium.Cartographic.fromCartesian(pick).longitude
          );
          console.log(lng, lat, height, pick);
        }

      }, Cesium.ScreenSpaceEventType.LEFT_CLICK);    

       // 移動監聽
      hander.setInputAction((movement) => {
    
      }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

      // 右鍵監聽
      hander.setInputAction((movement) => {

      }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);

  


免責聲明!

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



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