我在开发中,需要一个功能,时时获取经纬度和相机角度。需要对cesium中对事件实现监听。
cesium事件主要几大类类型:
1、鼠标事件:ScreenSpaceEventType 2、键盘事件:KeyboardEventModifier 3、相机事件:CameraEventType
事件之间可以通过组合形成复杂事件,比如下面代码
// 监听拖拽 export function monitorDrag() { const viewer = window.viewer; const handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); let previousPickedEntity = undefined; handler.setInputAction(function (movement) { //拾取笛卡尔坐标 var ellipsoid = viewer.scene.globe.ellipsoid;//全局椭球体 //拾取鼠标在椭圆上的结束点笛卡尔坐标点 var cartesian = viewer.scene.camera.pickEllipsoid(movement.endPosition, ellipsoid) if (cartesian) { //笛卡尔坐标转制图坐标 var cartographic = ellipsoid.cartesianToCartographic(cartesian); const longitude = Cesium.Math.toDegrees(cartographic.longitude).toFixed(2); const latitude = Cesium.Math.toDegrees(cartographic.latitude).toFixed(2); const height = Math.ceil(viewer.camera.positionCartographic.height); console.log({ longitude, latitude, height }); } }, Cesium.ScreenSpaceEventType.MOUSE_MOVE,Cesium.KeyboardEventModifier.CTRL); }