http://workshop.chromeexperiments.com/globe/のWebGLグローブを使用しています。地球のいずれかのポイントがクリックされた場合、そのポイントの経度と緯度を取得する必要があります。これらのパラメータは、2Dマップ用のGoogleマップに渡されます。
どうすれば長くなることができますか。と緯度。webglグローブから?
この関数を通して私はダブルクリックされたポイントを取得し、このポイントを通して私は長いものを見つけています。と緯度。しかし、結果は正しくありません。クリック点が正しく決まっていないようです。
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グローブを入手してくださいhttps://github.com/dataarts/webgl-globe/archive/master.zipMozilla で直接開くことができます。Chromeで開くと、クロスオリジンのために地球表面の画像が不足しています。リソース共有ポリシー。仮想ホストに配置する必要があります。