2012-10-23 51 views
2

我有一個JavaScript文件,它讀取包含笛卡爾座標的文本文件。我可以解析出X,Y,Z值;但我需要將它們轉換爲十進制格式的緯度/經度。這些輸出值將用於Google地圖標記。使用JavaScript將Cartesian(ECEF)轉換爲WGS84(Lat/Long Decimal)

我一直在研究,肯定有很多關於經緯度向笛卡爾轉換的指南,但是我需要這個工作方向相反。

試過的東西沿着線:

//convert to lat long dec 
var tmp = cartZ/6371; 
//convert to radians 
var tmpR = tmp * Math.PI/180; 
var lat = Math.asin(tmpR); 
latFinal = lat * 180/Math.PI; 
alert (latFinal); 

通常這是完全錯誤的......不知道如果我甚至在正確的軌道!

如果有人在使用JavaScript之前做了這個,那會很棒。

+0

這個http://www.gmat.unsw.edu.au/snap/gps/clynch_pdfs/coordcvt.pdf在兩個方向都有一個直接的轉換公式。 – Igor

回答

1

您可以嘗試使用proj4js庫來爲您進行轉換。見this question - 投影是不同的,但你應該能夠弄清楚。

0

npmjs.org上有這個方便的庫,可以幫你做到。一旦你已經安裝了它(使用NPM和browserify),你可以使用:

var projector = require('ecef-projector'); 
var xyz = projector.project(37.8043722, -122.2708026, 0.0); 
console.log(xyz); 
// output: [ -2694044.4111565403, -4266368.805493665, 3888310.602276871 ] 

var gps = projector.unproject(xyz[0], xyz[1], xyz[2]); 
console.log(gps); 
// output: [ 37.8043722, -122.27080260000001, 0.0 ] 

使用此功能可以投射兩種方式。

相關問題