Cesium JS无法在沙堡中选择地形

Cesium JS cannot pick terrain in sandcastle

我想简单地点击地形上的一个点来获取它的 3D 坐标,但我无法让它在 Cesium 中工作 sandcastle:

var viewer = new Cesium.Viewer('cesiumContainer', {
    terrainProvider : Cesium.createWorldTerrain()
});

var scene = viewer.scene;

scene.camera.setView({
  destination: Cesium.Cartesian3.fromDegrees(2.3488, 48.8534, 450),
  orientation: {
    heading: Cesium.Math.toRadians(0),
    pitch: Cesium.Math.toRadians(-40),
  },
}); 

var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(function onLeftClick(movement) {
    var ray = scene.camera.getPickRay(movement.position);
    var pos = scene.globe.pick(ray, scene);
    console.log("pos: ", pos);
  }, Cesium.ScreenSpaceEventType.LEFT_CLICK
);

每次点击都会执行该函数,但结果实际上是空的。

如何通过左键单击获取地形坐标?

示例灵感来自:https://cesium.com/docs/cesiumjs-ref-doc/Globe.html#pick and https://cesium.com/docs/tutorials/cesium-workshop/

为什么你的结果是空的?

因为 console.log 在 Sandcastle 中无法正常工作。
请尝试更改 "console.log("pos: ", pos);"到“console.log(位置);”

是否可以使用 console.log("pos: ", pos); 但只能在浏览器的检查模式下使用。

因此,不要使用默认的 Sandcastle 控制台,而是在检查模式下使用控制台(例如,在 Chrome 或 Firefox 中)。