Google maps 规则地图分幅的中心坐标

Google maps 规则地图分幅的中心坐标,google-maps,Google Maps,我正在尝试使用简单的web服务API从Google地图检索一组静态地图分幅 对于缩放级别0,其中只有一个平铺,我只需将中心指定为(0,0),这很简单。(是的,我知道,南北方向的范围只有[-85.05113°,85.05113°],也就是说,我读过(不仅仅是维基百科的文章) 因此,对于具有2×2分片的缩放级别1,我知道认为分片的中心坐标为(±90,±45)是天真的。我应用了上述文章“”部分中列出的函数之一。在PHP中,这看起来像 function mercor($aLat) { return

我正在尝试使用简单的web服务API从Google地图检索一组静态地图分幅

对于缩放级别0,其中只有一个平铺,我只需将中心指定为(0,0),这很简单。(是的,我知道,南北方向的范围只有[-85.05113°,85.05113°],也就是说,我读过(不仅仅是维基百科的文章)

因此,对于具有2×2分片的缩放级别1,我知道认为分片的中心坐标为(±90,±45)是天真的。我应用了上述文章“”部分中列出的函数之一。在PHP中,这看起来像

function mercor($aLat) {
  return rad2deg(asinh(tan(deg2rad($aLat))));
}
当传入45时,它总是返回50.498987。我尝试了几种可选表达式:-)都得到了相同的结果,甚至用专用计算器检查了该值

不管怎么说,这个值显然是不正确的,正如你在这里看到的(它应该显示地球地图的西北象限,但这里赤道向北移动)():

通过反复试验,我发现正确的值接近66.65,但我不知道如何计算。我尝试了几次
R
因子的操作,如“墨卡托投影的推导”一节中的表达式所示,也尝试了同一文档中描述的“比例因子”,但无论我做什么,我都没有接近66.65

在这里,您可以看到66.65是(接近)正确的值,赤道位于底部边缘():

举个例子():

像kruler这样的工具,很明显它应该是66.65

因此,任何想法都将不胜感激。先谢谢你


(目前我正在尝试使用HTML文档,因为它相对简单,但后来我想在一个无法调用JavaScript的环境中使用它。因此JavaScript API不是一个选项。)

我准备了一个网站,描述谷歌地图、OSM和类似slippy地图背后使用的流行平铺系统。看看:

单击交互式地图,您将收到以墨卡托坐标(米)和WGS84 lat/lon(大地测量度数)计算的边界

在页面下方,您可以找到一个开放源码的python代码(其他人已经将其移植到其他编程语言中)。这包含您可能需要的所有数学的文档描述

事实上,我是在为谷歌SoC在GDAL2Tiles/MapTiler项目上工作之后创建了这个资源的,这个项目已经被重新实现到C/C++中,并得到了显著的改进,现在可以通过

更新: 如果你想使用谷歌地图静态API请求,你可能会发现另一个有用的在线工具,我准备的:。 请随意查看JavaScript源代码