cesiumjs - Cesium JS no puede elegir terreno en un castillo de arena

CorePress2024-01-25  9

Estoy intentando simplemente hacer clic en un punto de un terreno para obtener sus coordenadas 3D, pero no puedo hacer que esto funcione en el castillo de arena de Cesium:

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
);

La función se ejecuta con cada clic, pero el resultado en realidad está vacío.

¿Cómo puedo obtener las coordenadas del terreno con un clic izquierdo?

El ejemplo está inspirado en: https://cesium.com/docs/cesiumjs-ref-doc/Globe.html#pick y https://cesium.com/docs/tutorials/cesium-workshop/



------------------------------------

¿Por qué el resultado está vacío?

Porque console.log no funciona como esperaba en Sandcastle. Intente cambiar "console.log("pos: ", pos);&quAntiguo Testamento; a "console.log(pos);"

1

¿Alguna explicación de por qué no funciona al insertar texto antes de los valores reales?

– caballero_suizo

25 de junio de 2021 a las 13:03



------------------------------------

¿Es posible utilizar console.log("pos: ", pos); pero sólo dentro del modo de inspección de un navegador.

Entonces, en lugar de usar el Sandcastle co predeterminadonsole, use la consola en modo de inspección (por ejemplo, en Chrome o Firefox).

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare