当我们在Cesium中想要根据当前地图(可能加载了地形或者三维模型等第五要素)通过鼠标点击获取点坐标的时候,我们这时候就要根据鼠标点击的是地形还是模型,动态识别获取对应目标上的经纬度和高程数据,window.mapViewer则是创建的Cesium地图对象;
-
pick1 = viewer.scene.pickPosition(clickEvent.position);
- 此方法返回的是点击位置在三维空间中的笛卡尔坐标,不受地形影响,也就是说即使点击的位置下方是建筑物或其他地形特征,也会得到一个基于绝对空间坐标的点。
- 如果点击的位置在地球之外,例如背景星空或大气层外,也能得到一个坐标。
-
pick2 = viewer.scene.camera.pickEllipsoid(clickEvent.position);
- 此方法试图在默认的地球椭球体表面上找到对应的点,仅当点击位置落在地球表面或非常接近地球表面时才会返回有效的坐标。
- 如果点击位置在地形之上(如建筑物顶部)或地球之外,那么返回的结果可能是
undefined
。
-
ray = viewer.camera.getPickRay(clickEvent.position);
- 此方法获取从相机指向点击位置的射线。
pick3 = viewer.scene.globe.pick(ray, viewer.scene);
- 这个组合方法使用获取的射线,在三维地球场景中寻找实际的交点,通常用于获取地形的实际高度坐标。
- 如果点击位