实现地图放大与缩小的功能是基于瓦片地图的拼接与显示的。
TMS是tile map service的缩写,是一种瓦片地图服务,也称之为WMTS(web map tile service),具体的标准可以见OGC网站。TMS的算法很简单,就是把投影后的世界地图按照层级进行四叉树(待验证)切割,切割后的瓦片数量随层级呈金字塔型。简单来说就是赋予地图缩放等级这个属性。即0级瓦片地图只有一张图片(瓦片),1级有四张。在第z级别,x,y方向的瓦片个数均为:
经纬度与瓦片坐标编号、像素的转换公式如下
以下图片(z,x,y)像素(m,n)[注:像素坐标以左上角为原点,x轴向右,y轴向下]的经纬度[单位:度]分别为:


用鼠标操作地图放大缩小过程的流程图如下:

操作过程中,程序获取需求显示的最大最小xy值。根据以上公式换算,请求加载相应的瓦片来显示地图细节。
参考:
Google Map 卫星地图/地形图:jpg 地图:png

网友评论