Google Map瓦片下载

Google Map瓦片下载

各类地图下载器都要花钱,无奈太穷只好自己写一个。

地址

瓦片地址
https://mts1.google.com/vt/lyrs={type}&gl=CN&hl={language}&x={x}&y={y}&z={z}

参数说明

  • lyrs = 类型

    • h = roads only
    • m = standard roadmap
    • p = terrain
    • r = somehow altered roadmap
    • s = satellite only
    • t = terrain only
    • y = hybrid
  • gl = 坐标系

    • CN = 中国火星坐标系
  • hl = 地图文字语言

    • zh-CN = 中文
    • en-US = 英文
  • x = 瓦片横坐标
  • y = 瓦片纵坐标
  • z = 缩放级别 卫星图0-14,路线图0-17

xyz坐标计算

Google Map采用蒙卡托投影(Mercator),记住了就行,因为使用地图的时候需要用到。

假设某点经度=lng,纬度=lat,缩放级别为zoom,那么对应的瓦片坐标为:

// 全球地图瓦片总行数、总列数
n = 2 ^ zoom; 
// 当前坐标瓦片横坐标x
// 横坐标计算比较简单,-180°为0,+180°为n,需要向下取整来包含当前的坐标
x = math.floor(((lng + 180.0) / 360.0) * n);

// 当前坐标瓦片纵坐标y
// 看不懂...大概意思是-90°~90°,不平均分n份
tan = math.tan(toRadians(lat));
sec = math.sec(toRadians(lat));
y = math.floor((1 - (math.log(tan + sec) / math.pi)) / 2 * n);

下载地图时,可取一个矩形区域2个对角经纬度坐标,根据以上公式计算瓦片坐标,访问瓦片下载地址进行下载保存图片。

注意(坑!)

瓦片横纵坐标范围是 0 ~ 2^zoom,1级1x1,2级2x2,3级4x4,……

卫星图,路线图建议分别下载,在地图显示控件中分层显示,这样可以选择性展示不同内容。

你可能感兴趣的:(node.js,google-maps)