我有一个墨卡托投影映射为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