swiss_knight
swiss_knight

Reputation: 7821

Cesium JS cannot pick terrain in sandcastle

I am trying to simply click a point on a terrain to get its 3D coordinates but I cannot get this to work in the 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
);

The function get executed on each click but the result is actually empty.

How could I get the terrain coordinates on a left click?

Example is inspired from: https://cesium.com/docs/cesiumjs-ref-doc/Globe.html#pick and https://cesium.com/docs/tutorials/cesium-workshop/

Upvotes: 0

Views: 485

Answers (2)

Ugnius Malūkas
Ugnius Malūkas

Reputation: 2827

Is it possible to use console.log("pos: ", pos); but only within an inspect mode of a browser.

So, instead of using the default Sandcastle console, use the console in inspect mode (e.g., in Chrome or Firefox).

Upvotes: 0

ZhefengJin
ZhefengJin

Reputation: 1092

Why is your result empty?

Because console.log does not work as you expect in Sandcastle.
Please try to change "console.log("pos: ", pos);" to "console.log(pos);"

Upvotes: 1

Related Questions