一、问题现象

高德地图离线地图的官方使用教程点这里传送门 我们把在正常有网的手机上通过离线地图下载的城市数据拷贝出来备用,如下图

android 高德离线地图使用 手机高德 离线地图_高德地图


把上面两个文件夹放到一台插有物联网卡的终端机器上,存放目录为SD卡根目录的amap文件夹下,接着打开终端,发现加载离线地图需要有2分钟时间才能加载成功。

二、问题解决

1、首先我们尝试断开该终端的物联网网络,同时设置了高德加载离线数据的方法

aMap.setLoadOfflineData(false);
        aMap.setLoadOfflineData(true);
        aMap.reloadMap();

这样的话,加载离线地图是很快的,可以在5秒中之内加载完成。

2、然后我们分析因为该物联网卡的网络无法访问外网,只能访问专用网络,所以我们认为在超时后高德地图才会去加载离线地图,于是找一下高德API里是否有让网络无效或者缩短超时时间的接口方法,功夫不负有心人,终于找到一个

MapsInitializer.setNetWorkEnable(false);

不过此方法已经过时,查找高德地图的版本更新记录后发现 ,高德地图3dmap sdk在5.0.0之后就不再支持这个方法。同时还发现高德地图3d地图在5.0.0之前叫map3d,之后叫3dmap

3、搜索旧版jar包,在这个地址找到,可以直接电机这个jar进行下载

android 高德离线地图使用 手机高德 离线地图_离线地图_02


也可以线添加依赖下载到本地后,然后再去指定目录(一般放在C:/.gradle/caches/modules-2/files-2.1/com.amap.api/map3d/4.1.3)找到这个jar包,就可以直接使用该jar包了,当然也可以直接使用依赖方式

4、使用旧版本jar包后,就可以正常使用那个过时被废弃的设置网络的方法了,但是经过一番测试发现也不行

5、最终的解决方法是在物联网的例外域名里添加高德地图(https://vdata.amap.com)的例外,然后就能快速(3秒内)加载离线地图了