项目中遇到一个需求,需要将某个地图区域的离线地图下载下来,整理很多网上的资料自己实现根据起始点的经纬度下载离线地图,代码如下
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Test {
private static final int BUFFER_SIZE = 2 * 1024;
public static void main(String[] args) throws Exception {
double [] start = new double[]{36.03267263,103.480619123};//最大纬度 最小精度 起点
double [] end = new double[]{35.522920921,103.520211928};//最小纬度 最大精度 终点
// 36.03267263 103.480619123 35.522920921 103.520211928
int [] z = new int[] {8,9};
/**
* 谷歌地图地址参数
* lyrs = 类型
*
* h = roads only 路线图
* m = standard roadmap
* p = terrain 地形图
* r = somehow altered roadmap
* s = satellite only 卫星图
* t = terrain only
* y = hybrid 混合
*/
String src = "http://mt0.google.cn/vt/lyrs=m@180000000&hl=zh-CN&gl=cn&x=%s&y=%s&z=%s&s=Ga";
String targetDir ="D:\\map";
//getGoogleMap(start,end,z,src,targetDir); //获取谷歌地图瓦片图
getFileInfo(targetDir);//获取下载之后的文件信息
toZip(targetDir, "D:/map.zip",true);//压缩下载的文件
}
/**
* 获取下载之后的文件信息
* @param targetDir
*/
public static void getFileInfo(String targetDir){
File file = new File(targetDir);
System.out.println("下载后的文件大小:"+file.length()/1024+"M");
File[] files = file.listFiles();
for (File f : files){
String level = f.getName();
int count =0;
File[] cfiles = f.listFiles();
for (File cf : cfiles){
count+=cf.list().length;
}
System.out.pr