本文共 1855 字,大约阅读时间需要 6 分钟。
一、场景初始化
let viewer = new Cesium.Viewer('cesiumContainer', { //地图图标,图层选择器,选择要显示的地图服务和地形服务,默认会用到cesium.ion baseLayerPicker: false, //问号图标,导航帮助按钮,显示默认的地图控制帮助 navigationHelpButton: false, animation: false,//动画器件,显示当前时间,允许跳转特定时间 timeline: false,//时间轴 //全屏图标,全屏按钮 fullscreenButton: false, //虚拟现实 //vrButton: true, //阴影 shadows: true, //点击后显示详细信息 //infoBox: true, //展示数据版权属性 CreditsDisplay: false, //terrainExaggeration: 3.0, //地形夸大 shouldAnimate: true});
二、监听 MOUSE MOVE 事件
注意:mouse move 事件多次设置,只执行最后一次定义的方法,前面都被覆盖
let handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);handler.setInputAction(function (movement) {//捕获椭球体,将笛卡尔二维平面坐标转为椭球体的笛卡尔三维坐标,返回球体表面的点 let ellipsoid = viewer.scene.globe.ellipsoid; let cartesian = viewer.camera.pickEllipsoid(movement.endPosition, ellipsoid); if (cartesian) { //将笛卡尔三维坐标转为地图坐标(弧度) let cartographic = ellipsoid.cartesianToCartographic(cartesian); //将地图坐标(弧度)转为十进制的度数 //经度 let log = Cesium.Math.toDegrees(cartographic.longitude).toFixed(2); //纬度 let lat = Cesium.Math.toDegrees(cartographic.latitude).toFixed(2); //视高 let alt = (viewer.camera.positionCartographic.height / 1000).toFixed(2); //海拔 let height = (viewer.scene.globe.getHeight(cartographic) / 1000).toFixed(2); //方位角 let heading = Cesium.Math.toDegrees(viewer.camera.heading).toFixed(2); //界面中显示 // let vpObj = document.getElementById('viewerPosition'); // vpObj.innerHTML = '经度:' + log + ' 纬度:' + lat + ' 视高:' + alt + ' km 海拔:' + height + ' km 方位角:' + heading + '°' let info = '经度:' + log + ' 纬度:' + lat + ' 视高:' + alt + ' km 海拔:' + height + ' km 方位角:' + heading + '°'; console.log(info); }}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
转载地址:http://danii.baihongyu.com/