Bootstrap

cesium 鼠标点击获取坐标

LEFT_CLICK
对于鼠标点击事件,传入的参数最好写为 event ,获取位置时调用event.position
MOUSE_MOVE
对于鼠标移动事件,参数最好写为movement,调用的时候分为movement.startPosition和movement.endPosition

handler.setInputAction(function (event) {
 //1.椭球面坐标:获取当前点击视线与椭球面相交处的坐标,在加载地形的场景上获取的坐标有误差
 //var earthPosition = viewer.camera.pickEllipsoid(event.position,viewer.scene.globe.ellipsoid);
 
//2.场景坐标:获取场景中任意点击处的对应的世界坐标,需要开启“地形深度检测”(在未开启“地形深度检测”的情况下只能在3DTile上准确获取空间坐标,开启“地形深度检测”后,viewer.scene.pickPosition 也能在非3DTile上准确获取坐标)
 viewer.scene.globe.depthTestAgainstTerrain = true;
 var earthPosition = viewer.scene.pickPosition(movement.position);
 // console.log(pickPosition, movement.position, pickedFeature);
 if (!Cesium.defined(pickedFeature)) {
     return;
 }
 var cartographic = Cesium.Cartographic.fromCartesian(earthPosition );
 var point = [
     Cesium.Math.toDegrees(cartographic.longitude).toFixed(4),
     Cesium.Math.toDegrees(cartographic.latitude).toFixed(4),
     cartographic.height.toFixed(4),
 ];
//3.地标坐标:获取点击处地球表面的世界坐标,不包括模型、倾斜摄影表面
// var ray = viewer.camera.getPickRay(event.position);
// var earthPosition = viewer.scene.globe.pick(ray, viewer.scene);
if (Cesium.defined(earthPosition)) {
 }
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);