zoukankan      html  css  js  c++  java
  • 大型情感类电视连续剧--Android高德之旅(2)地图类型

    总要说两句

    今天继续我们的Android高德之旅,上一篇已经能够显示最主要的地图了。有主要的放大缩小功能。还有最后做的点击3D旋转、倾斜视角的效果。今天这篇文章来记录一下高德地图的5种地图类型。


    (其实是4种类型,加上离线地图)

    5种地图类型各自是:

    • 常规地图模式(又称行政地图模式)
    • 卫星地图模式
    • 导航地图模式
    • 夜间地图模式
    • 离线地图模式(我是混进来的充数的)

    这5种地图模式在不同的场景下使用,各有优点。

    普通模式是默认的模式。展示地名、交通主干道、简单的地形、河流等。用的也是最多的;导航模式会突出显示交通线路。而降低把其他属性,常规模式下显示的部分地名会忽略掉。显示一些重要的地名;夜间模式不用说了,就是夜间护眼的,採用的是暗色调,低对照度。从而降低对眼镜的伤害。卫星模式展示的不再是电脑模拟图,而是真实的卫星拍摄的照片,卫星把全中国的土地都拍成一张张照片,然后经过非常碉堡的处理。拼接成无缝衔接的地图,放大后能够看到真实的楼房、道路、地貌、甚至汽车、行人。玩过Google地图的都知道,在欧洲一些空气质量非常好的地方(比方巴黎)。卫星模式展示的画面不要太美。

    至于离线地图模式。这并非展示模式,而是把地图数据包下载到本地。然后就能够在网络不佳的时候使用,比方室内。

    讲到这,肯定有人忍不住了,3D街景模式呢?这样的模式是高级模式。并且并非全部地方都有街景素材(在电脑上玩过的都知道,其实仅仅有较少的地方能够使用3D街景),所以我们今天先无论。

    好了,以下開始记录一下用法,筒子们,老司机要开车了。上车吧。

    开车

    1、普通模式

    这也是默认模式,也能够手动设置

    AMap aMap = mapView.getMap();
    aMap.setMapType(AMap.MAP_TYPE_NORMAL);

    这里写图片描写叙述

    2、导航模式

    AMap aMap = mapView.getMap();
    aMap.setMapType(AMap.MAP_TYPE_NAVI);

    这里写图片描写叙述

    3、夜间模式

    我在调试时偶现过一次夜间模式没有载入出来,显示一片黑,不知道是不是高德的bug

    AMap aMap = mapView.getMap();
    aMap.setMapType(AMap.MAP_TYPE_NIGHT);

    这里写图片描写叙述

    4、卫星模式

    AMap aMap = mapView.getMap();
    aMap.setMapType(AMap.MAP_TYPE_SATELLITE);

    这里写图片描写叙述

    是不是太简单了,都是一句话设置完事。

    今天这篇博客是不是太水了,博主太不负责任了。别急别急,还好有个离线地图,来帮我撑撑场面。

    5、离线地图模式

    离线地图并非新的展示模式,而是把地图数据包下载到本地。载入地图时就不须要再从网络下载。

    其实。高德地图在载入地图时都是优先载入本地离线数据的。本地没有才从网络下载。所以离线模式其实就是一系列的api调用。

    (1)新建下载管理器

    OfflineMapManager manager = new OfflineMapManager(Context, OfflineMapDownloadListener);

    第二个參数OfflineMapDownloadListener是下载监听器,用于下载状态的回调。

    @Override
    public void onDownload(int status, int completeCode, String downName) {
        switch (status) {
            case OfflineMapStatus.SUCCESS:
                //下载成功
                break;
            case OfflineMapStatus.LOADING:
                //载入中
                break;
            case OfflineMapStatus.UNZIP:
                //解压
                break;
            case OfflineMapStatus.WAITING:
                //等待下载
                break;
            case OfflineMapStatus.PAUSE:
                //暂停
                break;
            case OfflineMapStatus.STOP:
                //停止
                break;
            case OfflineMapStatus.ERROR:
                //错误
                break;
            case OfflineMapStatus.EXCEPTION_AMAP:
                //地图异常
                break;
            case OfflineMapStatus.EXCEPTION_NETWORK_LOADING:
                //网络载入错误
                break;
            case OfflineMapStatus.EXCEPTION_SDCARD:
                //SD存储错误
                break;
            default:
                break;
        }
    }
    
    @Override
    public void onCheckUpdate(boolean hasNew, String name) {
        //update时回调
    }
    
    @Override
    public void onRemove(boolean success, String name, String describe) {
        //delete离线包时回调
    }

    有了这些回调,就能够轻松的知道全部下载任务的状态了,太棒了!

    (2)開始下载

    offlineManager.downloadByCityCode(cityCode);//依据城市code
    offlineManager.downloadByCityName(cityName);//依据城市名
    offlineManager.downloadByProvinceName(provinceName);//依据省份名

    ps:这里城市名和省份名要写完整,带“市”、“省”,如:南京市、江苏省

    (3)暂停下载

    offlineManager.pause();

    (4)停止下载

    offlineManager.stop();

    (5)更改下载存储路径

    MapsInitializer.sdcardDir = "/sdcard/xx/xx/";

    (6)更新离线地图

    offlineManager.updateOfflineCityByCode(cityCode);
    offlineManager.updateOfflineCityByName(cityName);
    offlineManager.updateOfflineMapProvinceByName(provinceName);

    (7)删除离线地图

    offlineManager.remove(cityName);

    方便的api
    此外,高德还提供了一些api用户获取城市列表、省份列表的。

    (8)获取全国城市列表

    ArrayList<OfflineMapCity> cities = offlineManager.getOfflineMapCityList();

    (9)获取全国省份列表

    ArrayList<OfflineMapProvince> provinces = offlineManager.getOfflineMapProvinceList();

    (10)获取已下载的城市列表

    ArrayList<OfflineMapCity> cities = offlineManager.getDownloadOfflineMapCityList();

    (11)获取已下载的省份列表

    ArrayList<OfflineMapProvince> provinces = offlineManager.getDownloadOfflineMapProvinceList();

    (12)获取下载中和待下载的城市列表

    ArrayList<OfflineMapCity> cities = offlineManager.getDownloadingCityList();

    (13)获取下载中和待下载的省份列表

    ArrayList<OfflineMapProvince> provinces = offlineManager.getDownloadingProvinceList();

    依据城市名查询城市编码

    有了上面的api,我们就能够实现依据城市名称。查询出城市编码,用于以后的下载管理操作,以下是我写的一个实现,可能效率并不高。

    public int getCityCodeByCityName(String provinceName, String cityName) {
        if(TextUtils.isEmpty(provinceName)) {
            toast("省份名不能为空");
            return;
        }
        if(TextUtils.isEmpty(cityName)) {
            toast("城市名不能为空");
            return;
        }
    
        OfflineMapProvince findProvince = null;
        for (OfflineMapProvince province : offlineMapProvinceList) {
            if(provinceName.equals(province.getProvinceName())) {
                findProvince = province;
                break;
            }
        }
        if(findProvince == null) {
            toast("省份不存在");
            return;
        }
    
        OfflineMapCity findCity = null;
        ArrayList<OfflineMapCity> cityList = findProvince.getCityList();
        for (OfflineMapCity city : cityList) {
            if(cityName.equals(city.getCity())) {
                findCity = city;
                break;
            }
        }
        if(findCity == null) {
            toast("城市不存在");
            return;
        }
    
        return findCity.getCode();
    }

    完毕

    好了。今天要记录的就是这些,下篇博客会讲到UISetting。

    本期节目就到这里,感谢大家的收看,我们下期再见~

  • 相关阅读:
    Celery
    Xadmin的基本使用 补充:admin控制user字段
    Python pip换源 创建虚拟环境 luffy项目配置(数据库bug)
    gitignore 文件 刷新
    django python mange.py runserver 源码
    leetcode125. 验证回文串 python 简单
    leetcode1028 从先序遍历还原二叉树 python 100%内存 一次遍历
    fiddler
    xpath
    linux常用命令
  • 原文地址:https://www.cnblogs.com/llguanli/p/8404982.html
Copyright © 2011-2022 走看看