Android 自定义高德地图主题样式

好久没有来更新博客了,今天我们的客户又提出了新的需求,要求地图需要自定义,于是我查遍了官方文档,却没找到自定义的方法,百度搜了一下,好吧,高德的方法过时了,于是呢,机缘巧合中,找到了这位大神的博客:Android 高德地图自定义地图     

看日期还是前两个月更新的,所以方法差不多应该是最新的了。

这里写这篇博客,主要是要提醒大家,一是,他博客提到的方法,需要放在

aMap = mapView.getMap();   这个方法后面调用哦,另外,可能很多人跟我一样,找不到作者所说的CustomMapStyleOptions  这个类,因为避免一些方法过时或者高德官方取消一些方法,导致项目崩溃,所以我在项目中使用的是2018年的固定的某个版本的SDK,也就导致找不到这个类了,那么如何解决呢,导入最新的导航包就可以啦,下面具体说一下步骤:

1.导入高德地图最新的导航包: (当然前提是你前面项目都集成了高德地图了哈,这里就不多数了,集成很基础)

 implementation 'com.amap.api:navi-3dmap:latest.integration'

这里的latest.intergration   也就是版本始终保持最新的意思,所以没有版本号

 

2.在高德开发者中心,里面,找到控制台,依次点击左侧的自定义地图——选择觉得差不多的模板,然后调一下,对应需要的马路的颜色,湖泊的颜色等等,点击右上角的保存,然后返回后点击发布,弹出框中有JS ,Android,IOS的调用方法,这里就说Android的方法,点击都可以看到对应的使用方法,这里不要点击,点击下面的蓝色框文字:如何使用自定义地图。

 

然后选择Android,可以看到在线和离线,在线的也就是在线获取,需要付费,也就是以后用户不需要更新APP,你就可以在后台修改配置,然后用户的地图主题就变了,这里我们项目是固定的主题色,所以离线就可以了,然后生成了json或者data文件,我这里有两个:一个是style.data,一个是style_extra.data。两个都放入你的assets 文件夹下面,如果没有的话,记得在main文件夹下新建这个文件夹即可。   

第二步到此结束。

 

3.用上面作者的方法,在

 aMap = mapView.getMap();

这个方法之后,添加:

byte[]  buffer1 = null;
byte[]  buffer2 = null;
InputStream is1 = null;
InputStream is2 = null;
try {
    is1 = _mActivity.getAssets().open("style.data");
    int lenght1 = is1.available();
    buffer1 = new byte[lenght1];
    is1.read(buffer1);
    is2 = _mActivity.getAssets().open("style_extra.data");
    int lenght2 = is2.available();
    buffer2 = new byte[lenght2];
    is2.read(buffer2);
} catch (IOException e) {
    e.printStackTrace();
}finally {
    try {
        if (is1!=null)
            is1.close();
        if (is2!=null)
            is2.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}


CustomMapStyleOptions customMapStyleOptions = new CustomMapStyleOptions();
customMapStyleOptions.setStyleData(buffer1);
customMapStyleOptions.setStyleExtraData(buffer2);
aMap.setCustomMapStyle(customMapStyleOptions);

然后,运行一遍,大功告成,地图已经是设置好的颜色啦。

你可能感兴趣的:(原创)