如何点击地球上的坐标?

时间:2015-12-10 13:24:29

标签: three.js

我正在使用Chrome实验的地球http://globe.chromeexperiments.com,我想点击任何颜色坐标来显示弹出窗口但是没有调用事件监听器。有人可以帮助我怎么做吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试将相机中的光线投射到风景中然后获取拦截。请参阅rayCaster的文档。

您要做的是创建一个新的rayCaster对象,然后获取用户屏幕的鼠标坐标。您需要在画布的父元素上创建某种“onclick”事件。 一旦事件发生,rayCaster对象就有一个处理我们情况的属性“setFromCamera”。但是,您需要为它提供一个列表,其中包含您想要交叉的所有对象,即所有矩形。

所以你的代码看起来像这样,请注意我使用了jQuery:

var rayCaster = new THREE.Raycaster();

var onClickEventHandler = function(e) {
    //Save the mouse data as a vector
    //width and height pertain to the size of the canvas.
    var mousePosition = new THREE.Vector3((e.offsetX / width) * 2 - 1, 
        -(e.offsetY / height) * 2 + 1,
        0.5);
    rayCaster.setFromCamera(mousePosition, camera);
    //"objects" is the array of meshes that you care about the user intersecting
    var intersects = rayCaster.intersectObjects(objects);
}

“intersects”数组中包含的内容是“objects”数组中的所有项目,这些项目按照交叉顺序与光线相交。您可能对此数组的第一个元素感兴趣。

我不知道这个globe实用程序是否提供了更好的方法,我展示的是在风景中选择对象的通用方法。