地图瓦片缓存

使用场景

  • 不想到处寻找地图数据源;
  • 不想自己配置地图样式(地图美感精华所在);
  • 主流的web地图涵盖了详细的注记、矢量图、和影像图等丰富资源;
  • 纵使考虑到以上几点,但处于无法连接外网的内网环境下;

技术路线

2.1 计算得到分辨率resolution数组(参考代码)

public static double[] getResolutions(int maxLevel){
    double max = 360.0/256.0;
    double[] resolutions = new double[maxLevel+1];
    for(int z=0;z<=maxLevel;z++) resolutions[z] = max/Math.pow(2, z);
    return resolutions;
}

2.2 计算在某一级别的总行列数

int totalX = (int)Math.ceil(360.0/(re[z]*256.0)); //列数向上取整
int totalY = (int)Math.ceil(180.0/(re[z]*256.0)); //行数向上取整

2.3 通过指定坐标范围计算起止行列号

//起始结束列
int sX = (int)Math.floor(((extent[0] + 180) / 360) * totalX);
int eX = (int)Math.floor(((extent[2] + 180) / 360) * totalX);

//起始结束行
int sY = (int)Math.floor(((90 - extent[3]) / 180) * totalY);
int eY = (int)Math.floor(((90 - extent[1]) / 180) * totalY);

firstTileUrl(起始瓦片Url) = http://**********?x=startX&y=startY&z=l;
endTileUrl(末尾瓦片Url) = http://**********?x=endX&y=startY&z=l;
//中间部分的url循环遍历即可得出。

2.4. 下载(代码略,有java和.net版本)

参考文章(关键词:谷歌 离线 地图/瓦片)

  1. 简易版谷歌系瓦片下载(天地图为例)
  2. 从天地图下载瓦片构建ArcGIS Server底图服务:此文简单描述了天地图瓦片规则和如何发布为arcgis服务
  3. 仿GMap.NET方式的Java版离线地图瓦片下载:此文内容写的比较简单,需要进一步对源码进行研究
  4. 百度谷歌离线地图解决方案(离线地图下载):此博客的其他文章非常值得一看
  5. 客户端地图拼图算法解析:这篇文章是在1~4之前收到的,没怎么关注,后来看,殊途同归,只是开始没注意到
  6. 天地图瓦片下载及解析:这篇文章是在1~4之前收到的,没怎么关注,后来看,殊途同归,只是开始没注意到
  7. 根据坐标得到天地图、谷歌地图对应瓦片:作者的demo很棒,虽然这次没用到,以后相信会用到(天地图 请求瓦片)

你可能感兴趣的:(——【2DGIS】,——【Web开发】)