2023-02-13
WebGL开发
00
请注意,本文编写于 677 天前,最后修改于 19 天前,其中某些信息可能已经过时。

目录

一、Cesium4种获取鼠标点击位置

一、Cesium4种获取鼠标点击位置

1.获取鼠标点的对应椭球面位置:世界坐标(Cartesian3)

通过 viewer.scene.camera.pickEllipsoid(movement.position, ellipsoid)获取,可以获取当前点击视线与椭球面相交处的坐标,其中ellipsoid是当前地球使用的椭球对象:viewer.scene.globe.ellipsoid。

javascript
var viewer = new Cesium.Viewer('cesiumContainer'); var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); handler.setInputAction(function (movement) { var position = viewer.scene.camera.pickEllipsoid(movement.position, viewer.scene.globe.ellipsoid); console.log(position); }, Cesium.ScreenSpaceEventType.LEFT_CLICK);

2.获取加载地形后对应的经纬度和高程:地标坐标

通过viewer.scene.globe.pick(ray, scene)获取,可以获取点击处地球表面的世界坐标,不包括模型、倾斜摄影表面。其中ray=viewer.camera.getPickRay(movement.position)。

javascript
var viewer = new Cesium.Viewer('cesiumContainer'); var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); handler.setInputAction(function (movement) { var ray=viewer.camera.getPickRay(movement.position); var position = viewer.scene.globe.pick(ray, viewer.scene); console.log(position); }, Cesium.ScreenSpaceEventType.LEFT_CLICK);

3.获取倾斜摄影或模型点击处的坐标:场景坐标

通过viewer.scene.pickPosition(movement.position)获取,根据窗口坐标,从场景的深度缓冲区中拾取相应的位置,返回笛卡尔坐标。

javascript
var viewer = new Cesium.Viewer('cesiumContainer'); var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); handler.setInputAction(function (movement) { var position = viewer.scene.pickPosition(movement.position); console.log(position); }, Cesium.ScreenSpaceEventType.LEFT_CLICK);

4.获取点击处屏幕坐标 :屏幕坐标(鼠标点击位置距离canvas左上角的像素值)

javascript
var viewer = new Cesium.Viewer('cesiumContainer'); var handler= new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); handler.setInputAction(function (movement) { console.log(movement.position); }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:烈焰大火龙

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 © 烈焰大火龙 许可协议。转载请注明出处!