Google 地图切片URL地址解析
一、Google地图切片的投影方式及瓦片索引机制
1.地图投影
Google地图采用的是Web墨卡托投影(如下图),为了方便忽略了两极变形较大的地区,把世界地图做成了一个边长等于赤道周长的正方形(赤道长度为6378137米),原点在正方形中心,即经纬度为(0,0)处。Web墨卡托投影的X,Y坐标取值范围为:[-20037508.3427892,20037508.3427892],对应的经度取值范围为[-180,180],对应的纬度范围则为[-85.05112877980659,85.05112877980659]。具体投影解释请参考墨卡托投影:


2.瓦片索引机制
Google 地图的索引机制是 TMS(Tile Map Service)规范的一个变种,其地图瓦片如下图进行索引:
Google 瓦片坐标系:把地球投影后形成的正方形划分为2 的 level(缩放级别) 次幂个地图瓦片,原点在左上角,类似于像素坐标系;详细解释参见Google Maps API 文档。

TMS瓦片坐标系:TMS与Google的地图瓦片切割方法相同,不同的是TMS的原点在左下角。
转换关系:TMS 与Google 坐标系的X 、Z是相等的,Y 的转换关系为:Y(TMS) + Y(Google) = Math.pow(2,zoom) - 1
注:关于投影和瓦片索引机制强烈推荐阅读:Tiles à la Google Maps: Coordinates, Tile Bounds and Projection,文中详细分析了地图瓦片涉及各类坐标的转换关系及具体算法,包括瓦片坐标(Google、TMS、Bing QuadTree)、像素坐标、WGS84 经纬度、Mercator 投影平面坐标等。
3.地图缩放级别的分辨率与地图比例尺的关系
地图缩放级别的分辨率(Resolution),是指某缩放级别每个像素代表的实际距离;
地图比例尺(Scale),是指某缩放级别图上一米代表的实际距离;
默认使用屏幕分辨率为96
算法:
dpi=,即表示每英寸96像素,1英寸=.54厘米。
比例尺与分辨率的关系:Scale=Resolution×每米的像素个数,
即有Scale = Resolution×(*)/2.54
则Resolution = Scale*2.54/(*)
二、Google地图瓦片地址解析
1.使用Google Chrome 打开Google地图界面,按F12打开 开发人员工具,如下图:

由图片左侧的url地址可见,只要正确解析地址中的四个参数(x , y , z , s)就可以获取到地图瓦片了。
下面是本人的分析思路:
1.四个参数的含义(x、y、z、s):
x , y 是瓦片坐标系的坐标值,z代表缩放级别,s则共有八个字符:空字符和Galileo的七个字符。
x , y 的值在 z 增加时会按级数递增,而s 的值很可能是 x , y , z 三个参数组合后的从 0 到 7 的一个索引值。
x , y , z 组合后与 8 求余即可得到 s 的值。
2.四个参数的关系:
- 当 x = 0 时,y 增 1 时,s会同时增 1,与 z 值无关。
- 当 y = 0 时,x 增 1 时,s会同时增3 ,与 z 值无关。
- 从上面两条可以得出,x , y 很可能以 3*x + y 的方式组合,然后与 8 求余即得 s。
3.验证
4.其它几个参数的含义
2) url地址中的 lyrs 表示的是图层类型,即瓦片类型,具体含义如下:
地图瓦片类型验证,直接修改lyrs参数的值即可:http://mt2.google.cn/vt/lyrs=y@258000000&hl=zh-CN&gl=CN&src=app&x=214130&y=114212&z=18&s=Ga
m:路线图
t:地形图
p:带标签的地形图
s:卫星图
y:带标签的卫星图
h:标签层(路名、地名等)
3) 暂时未发现 "&s=..." 的意义,url有无此后缀都不影响瓦片地址的访问。
扩展阅读:
后记:此文只是提供了一种方法,google 地图切片地址的算法及前缀都可能会不断调整。
三、GMap.NET
GMap.NET - Great Maps for Windows Forms & Presentation
一个非常强大的开源地图项目(winform版),对于解析Google等地图服务的算法相当不错。
GMap.NET is great and Powerful, Free, cross platform, open source .NET control.
Enable use routing, geocoding, directions and maps from Coogle, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac, Yandex, Mapy.cz, Maps.lt, iKarte.lv, NearMap, OviMap, CloudMade, WikiMapia in Windows Forms & Presentation, supports caching and runs on windows mobile!
原文链接:Google 地图切片URL地址解析
Google 地图切片URL地址解析的更多相关文章
- google地图的url参数
Google Maps Intents for Android The Google Maps app for Android exposes several intents that you can ...
- JavaScript一个google地图获取
<script type="text/javascript"> /** * 返回一个新创建的<img>元素,该元素用于在获取到地理位置信息后,显示一张Goo ...
- Flex加载google地图、百度地图以及天地图作底图
一 Flex加载Google地图作底图 (1)帮助类GoogleLayer.as /* * 根据输入的地图类型加载Google地图(by chenyuming) */ package Layers ...
- ArcGIS API for Silverlight加载google地图(后续篇)
原文:ArcGIS API for Silverlight加载google地图(后续篇) 之前在博客中(http://blog.csdn.net/taomanman/article/details/8 ...
- ARCGIS FLEX API加载google地图、百度地图、天地图(转)
http://www.cnblogs.com/chenyuming507950417/ Flex加载google地图.百度地图以及天地图作底图 一 Flex加载Google地图作底图 (1)帮助类G ...
- 如何使用google地图的api(整理)
如何使用google地图的api(整理) 一.总结 一句话总结:直接用script标签引google地图api即可. 1.如何使用google地图的api? 页面引用javascript文件<s ...
- 根据google地图抓去全国信息- 抓去全国小区以及新建楼盘信息
本案例由于google每天每个账户能post20000次所以我们需要相对较长的时间来抓去google的数据信息. 主要思路:通过一定的zoom一个相对较大的zoom.我们尽可能的搜索我们的所有数据. ...
- Google地图实现
API地址:https://developers.google.com/maps/documentation/javascript/tutorial <div id="map" ...
- 网页中嵌入google地图
一丶前言 大致需求:美国地图中标记分布的仓库图钉(鼠标经过显示地址详情),通过输入寄收件地邮编来在地图上定位位置添加图钉,将寄件地,选择的仓库,收件地图钉折线相连接,表示大致路线. 一丶google开 ...
随机推荐
- js小练习-移除数组中的元素
移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回 代码: <!DOCTYPE HTML><html> <he ...
- Fastify 系列教程二 (中间件、钩子函数和装饰器)
Fastify 系列教程: Fastify 系列教程一 (路由和日志) Fastify 系列教程二 (中间件.钩子函数和装饰器) Fastify 系列教程三 (验证.序列化和生命周期) Fastify ...
- Android属性动画的监听事件
整体很简单,直接上代码吧.activity_main.xml: <?xml version="1.0" encoding="utf-8"?> < ...
- android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配
1 Android手机目前常见的分辨率 1.1 手机常见分辨率: 4:3VGA 640*480 (Video Graphics Array)QVGA 320*240 (Quarter VGA ...
- redis 集群目标、集群查看、配置方法及过程、哨兵配置启动
集群目标 主从复制,读写分离:故障切换(通过哨兵实现) 查看集群状态 info replication 配置方法 只设置从数据库就可以了:最佳实践,在主数据库配置masterauth <mast ...
- PHP二维数据排序,二维数据模糊查询
一.因为项目中的一个报表需要合并三个表的数据,所以分表查询再合并数据,利用PHP数组函数进行排序,搜索.三表合并后的数组结构如下: Array ( [0] => Array ( [history ...
- oracle 闪回功能详解
Oracle的闪回技术提供了一组功能,可以访问过去某一时间的数据并从人为错误中恢复.闪回技术是Oracle 数据库独有的,支持任何级别的恢复,包括行.事务.表和数据库范围.使用闪回特性,您可以查询以前 ...
- 新一代 javascript 模板引擎:artTemplate-3.0
特性 性能卓越,执行速度通常是 Mustache 与 tmpl 的 20 多倍(性能测试) 支持运行时调试,可精确定位异常模板所在语句(演示) 对 NodeJS Express 友好支持 安全,默认对 ...
- Sql Server中的谓词和运算符
谓词和运算符配合使用是我们得到理想数据的最佳途径. 一.浅谈谓词 谓词的概念:一个运算结果为True.False或Unknown的逻辑表达式.它的运用范围有:where子句.Having子句.Chec ...
- ASP.NET Web API 跨域访问(CORS)要注意的地方
一.客户端用JSONP请求数据 如果你想用JSONP来获得跨域的数据,WebAPI本身是不支持javascript的callback的,它返回的JSON是这样的: {"YourSignatu ...