Cesium初始化配置和鼠标左键旋转右键拖拽事件
1,Cesium 的初始化配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | 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.鼠标事件调整
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | //关闭双击事件 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.鼠标事件监听
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | // 左键监听 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); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律