我有一個墨卡託投影映射爲JPEG,我想知道如何將給定的x,y座標與其經度和緯度關聯。我看過Gudermannian函數,但我真的不明白如何使用該函數並應用它。也就是說,它期望什麼輸入?我發現的實現(JavaScript)似乎需要-PI和PI之間的範圍,但是我的y值(以像素爲單位)和該範圍之間的相關性如何?如何在墨卡托地圖(JPEG)上從x,y獲取緯度和經度?
此外,我發現這個函數需要一個緯度並返回谷歌地圖,也使用墨卡託瓷磚。似乎如果我知道如何反轉這個功能,我會非常接近我的答案。
/*<summary>Get the vertical tile number from a latitude
using Mercator projection formula</summary>*/
private int getMercatorLatitude(double lati)
{
double maxlat = Math.PI;
double lat = lati;
if (lat > 90) lat = lat - 180;
if (lat < -90) lat = lat + 180;
// conversion degre=>radians
double phi = Math.PI * lat/180;
double res;
//double temp = Math.Tan(Math.PI/4 - phi/2);
//res = Math.Log(temp);
res = 0.5 * Math.Log((1 + Math.Sin(phi))/(1 - Math.Sin(phi)));
double maxTileY = Math.Pow(2, zoom);
int result = (int)(((1 - res/maxlat)/2) * (maxTileY));
return (result);
}
如果我沒有記錯,谷歌採用的是方形投影,而不是墨卡託。 – 2009-07-22 15:23:41
Virtual Earth和Google都使用墨卡託。 – 2009-07-22 15:28:14