google静态地图下载。预备知识,从其他人哪里借鉴过来的。
一:像素和经纬度的转换公式:(这个是必须的了,下载全靠它了).
- 经度到像素X值
- public static double lngToPixel(double lng, int zoom) {
- return (lng + 180) * (256 * 2^zoom) / 360;
- }
- 像素X到经度
- public static double pixelToLng(double pixelX, int zoom) {
- return pixelX * 360 / (256 * 2^ zoom) - 180;
- }
- 纬度到像素Y
- public static double latToPixel(double lat, int zoom) {
- double siny = Math.sin(lat * Math.PI / 180);
- double y = Math.log((1 + siny) / (1 - siny));
- return (128 * z^ zoom) * (1 - y / (2 * Math.PI));
- }
- 像素Y到纬度
- public static double pixelToLat(double pixelY, int zoom) {
- double y = 2 * Math.PI * (1 - pixelY / (128 * z ^ zoom));
- double z = Math.pow(Math.E, y);
- double siny = (z - 1) / (z + 1);
- return Math.asin(siny) * 180 / Math.PI;
- }
google瓦片地图原理:http://blog.csdn.net/hugoandpig/article/details/7719307
主要注意下切图方式,与地图级别的关系。
google地图api:http://blog.csdn.net/u011393661/article/details/14053113 官方网站:https://developers.google.com/maps/documentation/staticmaps/
把这些预备知识看看就差不多了。
二:下载地图算法:
1.确定下载地图尺寸。一般是256X256的瓦片地图。
2.确定地图级数,获取瓦片地图数目
3.循环下载,由像素转换成经纬度利用url进行下载。
4.去除地图水印,google标识。
5.存入数据库或者本地文件夹(如果存入本地文件夹超过五级的地图就很难恢复成一张大的世界地图了)
6.恢复成一张大的世界地图,即地图查看器。
下一篇上代码,代码写的很菜,写下来方便日后用。