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