一、英文文档
二、中文翻译
谷歌正在以大约18个缩放阶段的256 * 256 个图像(“ 图块”)来保持世界。最低的变焦是0,最高的17.每个点 - 嗯,几乎每个除极区外 - 在地球上可以在任何变焦的正好一个瓷砖中找到。在变焦0时整个世界保存在一个单一的瓷砖中。在缩放17处,世界分布在巨大的17.179.869.184瓦片上。用于缩放阶段覆盖整个世界所需的瓦片数量可以用。
总的区块数 = 2^(2*zoom),zoom表示放大倍数。每个区块 = 256*256 bitmap.
随着缩放的每次增量,位图的宽度/高度加倍,因此图像区域大小每次乘以4。位图(0,0)原点位于左上角。中心坐标始终等效于地球地理坐标,用(0,0)表示。人们可以将这种简单的行为想象成某种表面上的“视频投影”:如果您非常靠近投影仪,图像可能会被捕获在一张纸上。如果增加投影机和纸张之间的距离,显然必须放大纸张或将一堆纸粘在一起才能捕获整个投影机图像。
谷歌正在使用墨卡托投影。为了确定给定地理坐标(即经纬度)和缩放倍数下位图像素坐标的关系,有几种算法可用,因此以下不是唯一的,而是一个简单易懂的问题解决方案:
图2 对于给定的经度λ和纬度phi, 用于计算地图中X和Y坐标的基本墨卡托公式
根据定义,墨卡托不适用于+ -85.0511287798066以上的地理坐标,因为y计算趋于达到90度的奇点。该算法检查那些“无效”坐标。根据墨卡托计算器计算X和Y后,X和Y由算法归一化以适应区间-1 <= x <= 1和-1 <= y <= 1通过分别除去180(X)、90(Y)。
结果值norm_x和norm_y可以应用于任何类型方形图的映射。在上面的代码中,它被应用于匹配Google的世界投影,如图1所示。结果是行/列/zoom的三个值,可用于查询Googles的“锁孔”地图服务器以获取图像。 floor(x)和floor(y)值可以直接用作查询的参数。查询中的zoom缩放参数必须设置为17倍。x和y的乘以256给出了区块内的相对坐标。
比如根据经纬度和地图放低倍数,可以知道经纬度对应的平面坐标为:
Sample: Geocode of center of Berlin/Germany 52.5211° 13.4122° at zoom 10
X = 550
Y = 335
Query:
http://mt.google.com/mt?x=550&y=335&zoom=10
如果为了构建更大的图像而必须并行地请求几个图块,则有时使用4个锁孔服务器以伪随机方式将该任务分布在多个线程上更有效。一个查询进入http://mt0.google.com/mt,另一个转到mt1等等。注意:出于优化原因,Google Maps for Mobile使用64 * 64磁贴而不是256 * 256磁贴。因此,生成的Tile Coordinate必须在其行和列部分中乘以4以满足需要。此外,还有另一个URL和机制来检索图像。有关详细信息,请参阅http://maps.alphadex.de上的示例代码
NoteNote:
出于优化原因,Google Maps for Mobile使用64 * 64磁贴而不是256 * 256磁贴。 因此,生成的TileCoordinate必须在其行和列部分中乘以4以满足需要。 此外,还有另一个URL和机制来检索
图片。 有关详细信息,请参阅http://maps.alphadex.de上的示例代码