总要说两句

今天继续我们的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。

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

大型情感类电视连续剧--Android高德之旅(2)地图类型的更多相关文章

  1. 大型情感类电视连续剧--Android高德之旅(3)地图交互

    总要说两句 前两篇讲到了地图的基础显示和地图类型,今天来记录下高德地图交互相关的设置.地图的绘制分很多层,层级的显示需要根据不同的场景来设置.地图的触摸事件也很丰富,有单击.双击.单指拖拽.双指拖拽. ...

  2. Android的Bitmap和BitmapDrawable类解析-android学习之旅(六十)

    使用简单图片 使用Drawable对象 bitmap和BitmapDrawable对象 package peng.liu.test; import android.app.Activity; impo ...

  3. 大型情感类技术连续剧-徒手撸一个 uTools(二)

    前言 上篇手把手教你实现一个支持插件化的 uTools 工具箱我们介绍过了如何通过 electron 实现 utools 的插件功能体系,并按照 utools 的交互和设计做出了一套可以支持插件化的桌 ...

  4. 我的Android进阶之旅------&gt;MIME类型大全

    今天在实现一个安装apk的代码中看到一段代码为:application/vnd.android.package-archive.不知其意.所以百度了一下,了解到这是一种MIME的类型,代表apk类型. ...

  5. 我的Android进阶之旅------>百度地图学习:BDLocation.getLocType ( )值分析

    BDLocation类,封装了定位SDK的定位结果,在BDLocationListener的onReceive方法中获取.通过该类用户可以获取error code,位置的坐标,精度半径等信息.具体方法 ...

  6. Android开发之旅: Intents和Intent Filters(理论部分)

    引言 大部分移动设备平台上的应用程序都运行在他们自己的沙盒中.他们彼此之间互相隔离,并且严格限制应用程序与硬件和原始组件之间的交互. 我们知道交流是多么的重要,作为一个孤岛没有交流的东西,一定毫无意义 ...

  7. 转:Android开发之旅:环境搭建及HelloWorld

    http://www.cnblogs.com/skynet/archive/2010/04/12/1709892.html 引言 本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Andr ...

  8. Android开发之旅:环境搭建及HelloWorld

    引言 本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Android队伍中的一个新人的我,如果有什么不对的地方,还望不吝赐教. 在开始A ...

  9. Android 开发之旅:深入分析布局文件&又是“Hello World!”

    http://www.cnblogs.com/skynet/archive/2010/05/20/1740277.html 引言 上篇可以说是一个分水岭,它标志着我们从Android应用程序理论进入实 ...

随机推荐

  1. Pycharm-连接服务器

  2. Hadoop-CDH源码编译

    * Hadoop-CDH源码编译 这一节我们主要讲解一下根据CDH源码包手动编译的过程,至于为什么要使用CDH,前几节已经说明,那为什么又要自己手动编译,因为CDH的5.3.6对应的Hadoop2.5 ...

  3. C语言基础-第五章

    流程控制 1.顺序结构 顺序结构是指程序将按照书写的顺序一步步执行程序. 2.选择结构 2.1但分支结构语句 if(表达式){语句} 2.2双分支结构 if(表达式){}else if{} else{ ...

  4. 机器学习(七) PCA与梯度上升法 (上)

    一.什么是PCA 主成分分析 Principal Component Analysis 一个非监督学的学习算法 主要用于数据的降维 通过降维,可以发现更便于人类理解的特征 其他应用:可视化:去噪 第一 ...

  5. 【转载】eclipse中批量修改Java类文件中引入的package包路径

    原博客地址:http://my.oschina.net/leeoo/blog/37852 当复制其他工程中的包到新工程的目录中时,由于包路径不同,出现红叉,下面的类要一个一个修改包路径,类文件太多的话 ...

  6. js字符串首字母转为大写

    function initialsLetterUpperCase(arr){ if(Array.isArray(arr)){ return arr.map(function(val,index,arr ...

  7. UVa 1151 Buy or Build【最小生成树】

    题意:给出n个点的坐标,现在需要让这n个点连通,可以直接在点与点之间连边,花费为两点之间欧几里得距离的平方,也可以选购套餐,套餐中所含的点是相互连通的 问最少的花费 首先想kruskal算法中,被加入 ...

  8. Git学习总结(6)——作为一名程序员这些代码托管工具你都知道吗?

    作为一名程序员这些代码托管工具你都知道吗? 作为一名优秀的开发者,大家都会用到代码托管,我本人用的是github,确实github里面有很多很多开源的项目,所以我们目前的创业项目程序员客栈www.pr ...

  9. CSU 1510 Happy Robot

    1510: Happy Robot Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 19  Solved: 7 Description Input The ...

  10. 三种记录 MySQL 所执行过的 SQL 语句的方法

    程式 Debug 有時後從前面第一行追起來很辛苦(程式碼太多或 compile 過), 另一種做法就是從後面追起來, 反正最後寫入的是 DB, 那就從 DB 開始往前推, 所以就是要抓程式是執行哪些 ...