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);