Cesium 获取手势移动坐标
时间: 2023-09-09 10:13:33 浏览: 85
在 Cesium 中,可以通过监听 `Scene` 下的 `preUpdate` 事件来获取手势移动的坐标。具体实现如下:
```javascript
// 获取 Scene 对象
var scene = viewer.scene;
// 定义一个变量记录上一次手势移动的位置
var lastPosition = new Cesium.Cartesian2();
// 监听 preUpdate 事件
scene.preUpdate.addEventListener(function(scene, time) {
// 获取当前的手势移动位置
var position = scene.camera.position;
// 判断当前位置是否与上一次位置相同
if (!Cesium.Cartesian2.equals(position, lastPosition)) {
// 手势移动的坐标
var movement = new Cesium.Cartesian2(
position.x - lastPosition.x,
position.y - lastPosition.y
);
// TODO: 处理手势移动坐标
// 更新上一次手势移动位置
lastPosition = position.clone();
}
});
```
在上面的代码中,我们通过监听 `Scene` 对象下的 `preUpdate` 事件来获取手势移动的坐标。在 `preUpdate` 事件回调函数中,我们可以通过 `scene.camera.position` 属性获取当前相机的位置,然后判断当前位置是否与上一次位置相同,如果不同则计算出手势移动的坐标。最后更新上一次手势移动位置即可。
需要注意的是,Cesium 中的手势移动坐标是相对于屏幕的像素坐标,如果需要转换成地理坐标需要使用 `scene.camera.pickEllipsoid` 方法进行转换。
阅读全文