我在开发中,需要一个功能,时时获取经纬度和相机角度。需要对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);
}