Android google map tile下载

一、概述

最近在做项目的时候,需要用到google离线地图,但是google并没有提供离线地图下载的接口。通过在网上查找资料后发现,google的离线地图可以通过下载tile、然后在地图上添加tile来完成。下面我们一起来看看怎么下载google map tile。

二、下载网址

需要下载google map tile我们首先需要的就是下载地址,在此google为我们提供了四个下载的基础地址:

  1. http://mt0.google.cn/vt/
  2. http://mt1.google.cn/vt/
  3. http://mt2.google.cn/vt/
  4. http://mt3.google.cn/vt/

使用这些基础下载地址是无法进行下载的,因为我们必须要指定你下载tile索引和zoom。同时还可以指定下载的tile类型、语言、国家、以及屏幕密度等等的参数。下面我们来看一个可以下载tile的地址:
http://mt3.google.cn/vt/lyrs=m&hl=zh-CN&gl=CN&scale=3.0&x=6464&y=3363&z=13
上面的就是我下载tile时的完整下载地址,下面说说每个参数的含义:

1. lyrs

含义:需要下载的地图类型,如果不传入此参数,默认是默认地图类型,即m,地图类型包括以下4种:

  1. m —— 默认地图类型
  2. p —— 地形图
  3. y —— 卫星图
  4. h —— 标签层
2. hl

含义:语言代码,会下载你传入的语言的map tile,如果没有这个语言。会下载英语的map tile。

3. gl

含义:国家代码,hl、gl对于需要多语言的app非常有用,如果不传入这两个参数,默认下载下来的tile会是英语。

4. scale

含义:屏幕像素密度,即context.resources.displayMetrics.density获取到的值,这个参数很重要,如果你不下载手机对应的屏幕密度的tile,那么,加载出来的地图可能是模糊的,因为在当前屏幕密度下,下载的tile的清晰度不够,如果不传入此参数默认为1。

5. x、y

含义:当前zoom下的当前tile的索引,x、y的计算方法如下:

val y =  Math.floor((1 - Math.log(Math.tan(aLat * Math.PI / 180) + 1 / Math.cos(aLat * Math.PI / 180)) / Math.PI) / 2 * (1 shl zoom)).toInt()
val x = Math.floor((aLon + 180) / 360 * (1 shl zoom)).toInt()

其中,aLat为经度,aLon为纬度,zoom为你需要下载tile的缩放倍数。通过上面的方法就可以计算出对应的title的索引。

6. zoom

含义:需要下载的地图的缩放倍数,比如,你需要的离线地图的缩放倍数是15,那么zoom就是15。此参数对应于x、y索引的计算的zoom。

至此我们已经可以拼接下载tile的下载地址了。

三、tile下载

上面已经详细的说明了tile的下载地址的拼接,有了下载地址我们通过网络下载保存tile到本地就可以了,对于网络下载这里就不做说明了。下载好title后,在需要使用离线地图的时候,通过addTileOverlay加载对应的tile即可。把tile添加到地图上,请参考:google官网地址

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值