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