使用场景
- 不想到处寻找地图数据源;
- 不想自己配置地图样式(地图美感精华所在);
- 主流的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版本)
参考文章(关键词:谷歌 离线 地图/瓦片)
- 简易版谷歌系瓦片下载(天地图为例)
- 从天地图下载瓦片构建ArcGIS Server底图服务:此文简单描述了天地图瓦片规则和如何发布为arcgis服务
- 仿GMap.NET方式的Java版离线地图瓦片下载:此文内容写的比较简单,需要进一步对源码进行研究
- 百度谷歌离线地图解决方案(离线地图下载):此博客的其他文章非常值得一看
- 客户端地图拼图算法解析:这篇文章是在1~4之前收到的,没怎么关注,后来看,殊途同归,只是开始没注意到
- 天地图瓦片下载及解析:这篇文章是在1~4之前收到的,没怎么关注,后来看,殊途同归,只是开始没注意到
- 根据坐标得到天地图、谷歌地图对应瓦片:作者的demo很棒,虽然这次没用到,以后相信会用到(天地图 请求瓦片)