我正在使用来自http://workshop.chromeexperiments.com/globe/的 WebGL 地球仪。如果单击地球上的任何一点,我需要获取该点的经度和纬度。这些参数将被传递给 Google Maps 的 2D 地图。
怎么才能长。和纬度。来自 webgl 地球?
通过这个函数,我得到了双击点,通过这个点,我找到了 long。和纬度。但结果并不正确。似乎点击的点没有正确确定。
function onDoubleClick(event) {
event.preventDefault();
var vector = new THREE.Vector3(
( event.clientX / window.innerWidth ) * 2 - 1,
-( event.clientY / window.innerHeight ) * 2 + 1,
0.5
);
projector.unprojectVector(vector, camera);
var ray = new THREE.Ray(camera.position, vector.subSelf(camera.position).normalize());
var intersects = ray.intersectObject(globe3d);
if (intersects.length > 0) {
object = intersects[ 0 ];
console.log(object);
r = object.object.boundRadius;
x = object.point.x;
y = object.point.y;
z = object.point.z;
console.log(Math.sqrt(x * x + y * y + z * z));
lat = 90 - (Math.acos(y / r)) * 180 / Math.PI;
lon = ((270 + (Math.atan2(x, z)) * 180 / Math.PI) % 360) - 180;
console.log(lat);
console.log(lon);
}
}
在此处获取 WebGL Globe https://github.com/dataarts/webgl-globe/archive/master.zip 您可以直接在 Mozilla 上打开它,如果您在 Chrome 中打开它,它适用于由于 Cross-Origin 而缺少地球表面图像资源共享政策。它需要放在虚拟主机中。