【问题标题】:Cesium JS cannot pick terrain in sandcastleCesium JS 无法在沙堡中拾取地形
【发布时间】:2021-03-28 08:02:11
【问题描述】:

我试图简单地单击地形上的一个点来获取它的 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#pickhttps://cesium.com/docs/tutorials/cesium-workshop/

【问题讨论】:

    标签: cesium


    【解决方案1】:

    为什么你的结果是空的?

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

    【讨论】:

    • 任何解释为什么在实际值之前插入一些文本时它不起作用?
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      • 2017-04-05
      • 1970-01-01
      相关资源
      最近更新 更多