const viewer = new Cesium.Viewer("cesiumContainer", {
animation: false, //动画控件
baseLayerPicker: true, //底图选择
fullscreenButton: true, // 全屏按钮
geocoder: true, // 搜索功能
homeButton: false, //home键值,返回初始地图
infoBox: false, // 选择信息展示框
navigationHelpButton: false, //是否显示右上角的帮助按钮
navigationInstructionsInitiallyVisible: true, // 导航说明显示
requestRenderMode: true, // 显式渲染,渲染优化
maximumRenderTimeChange : Infinity // 请求新帧的时间
sceneModePicker: false, //是否显示3D/2D选择器
sceneMode: Cesium.SceneMode.SCENE3D, //3d视角展示
shadows: true, //光照的阴影效果
terrainProvider: Cesium.createWorldTerrain({
requestVertexNormals: true,
requestWaterMask: true, // 动态水流
}), // 展示地形
timeline: true, //时间轴控件
vrButton: false, //vr功能
imageryProvider: new Cesium.ArcGisMapServerImageryProvider({
url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
}) // 默认加载arcgis在线地图
});
viewer.scene.setTerrainExaggeration(2.0); // 地形夸张
viewer.scene.primitives.add(Cesium.createOsmBuildings()); // 建筑osm
viewer.scene.globe.enableLighting = true; // 启用光照
viewer.scene.globe.depthTestAgainstTerrain = true; //深度检测
viewer.cesiumWidget.creditContainer.style.display = "none"; //去cesium logo水印
viewer.scene.screenSpaceCameraController.maximumZoomDistance = 40000000; //最大缩放高度
viewer.scene.screenSpaceCameraController.minimumZoomDistance = 1000 // 最小缩放高度
默认requestRenderMode值为false,CesiumJS会以常规方式渲染场景,这意味着它将尽可能频繁地渲染新的帧以保持场景的流畅性。CesiumJS 会在以下情况下自动渲染新的帧:
-
场景中的摄像机位置或方向发生更改。
-
场景中的图形图元属性发生更改。
-
场景中添加或删除图形图元。
-
渲染器 (Renderer) 的其他属性发生更改。
启用 requestRenderMode 可减少 Cesium 渲染新帧的总时间量,并降低应用程序中 Cesium 的总体 CPU 使用率。启用requestRenderMode值为true,需要在渲染时,使用scene.requestRender()语句手动更新场景。
默认情况下,启用 requestRenderMode 后,当模拟时间变化超过 0.0 秒时,将请求新帧。可以通过设置 maximumRenderTimeChange 来调整此值。如果您的场景具有随时间变化的元素(例如动画、照明变化、水色蒙版或视频),请考虑这一点。如果场景中没有元素随模拟时间而变化,请考虑将最大值渲染时间更改设置为较高的值,例如无穷大。