大型情感类电视连续剧--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。
本期节目就到这里,感谢大家的收看,我们下期再见~
大型情感类电视连续剧--Android高德之旅(2)地图类型的更多相关文章
- 大型情感类电视连续剧--Android高德之旅(3)地图交互
总要说两句 前两篇讲到了地图的基础显示和地图类型,今天来记录下高德地图交互相关的设置.地图的绘制分很多层,层级的显示需要根据不同的场景来设置.地图的触摸事件也很丰富,有单击.双击.单指拖拽.双指拖拽. ...
- Android的Bitmap和BitmapDrawable类解析-android学习之旅(六十)
使用简单图片 使用Drawable对象 bitmap和BitmapDrawable对象 package peng.liu.test; import android.app.Activity; impo ...
- 大型情感类技术连续剧-徒手撸一个 uTools(二)
前言 上篇手把手教你实现一个支持插件化的 uTools 工具箱我们介绍过了如何通过 electron 实现 utools 的插件功能体系,并按照 utools 的交互和设计做出了一套可以支持插件化的桌 ...
- 我的Android进阶之旅------>MIME类型大全
今天在实现一个安装apk的代码中看到一段代码为:application/vnd.android.package-archive.不知其意.所以百度了一下,了解到这是一种MIME的类型,代表apk类型. ...
- 我的Android进阶之旅------>百度地图学习:BDLocation.getLocType ( )值分析
BDLocation类,封装了定位SDK的定位结果,在BDLocationListener的onReceive方法中获取.通过该类用户可以获取error code,位置的坐标,精度半径等信息.具体方法 ...
- Android开发之旅: Intents和Intent Filters(理论部分)
引言 大部分移动设备平台上的应用程序都运行在他们自己的沙盒中.他们彼此之间互相隔离,并且严格限制应用程序与硬件和原始组件之间的交互. 我们知道交流是多么的重要,作为一个孤岛没有交流的东西,一定毫无意义 ...
- 转:Android开发之旅:环境搭建及HelloWorld
http://www.cnblogs.com/skynet/archive/2010/04/12/1709892.html 引言 本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Andr ...
- Android开发之旅:环境搭建及HelloWorld
引言 本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Android队伍中的一个新人的我,如果有什么不对的地方,还望不吝赐教. 在开始A ...
- Android 开发之旅:深入分析布局文件&又是“Hello World!”
http://www.cnblogs.com/skynet/archive/2010/05/20/1740277.html 引言 上篇可以说是一个分水岭,它标志着我们从Android应用程序理论进入实 ...
随机推荐
- Apache Bench测试
- 压力测试神器 Siege - Locust Web测压工具python开源 - 介绍: ab是apachebench命令的缩写. ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某 ...
- C语言基础-第五章
流程控制 1.顺序结构 顺序结构是指程序将按照书写的顺序一步步执行程序. 2.选择结构 2.1但分支结构语句 if(表达式){语句} 2.2双分支结构 if(表达式){}else if{} else{ ...
- 学以敩(xiao,效)为敎,以见为觉。醒悟、明白。
学以敩(xiao,效)为敎,以见为觉.醒悟.明白 上半部分中间的爻是算筹,在古时被用来记数和计算:两边是手,既表示手把手传授,双手也表恭敬与专注:中间是一座房子,表示教学和学习的地方,这个地方不用豪华 ...
- Linux Putty 复制粘贴
从putty复制: 用左键选中文字,再其他地方点中键就可以粘贴了,不需要右键粘贴. 在putty中粘贴: 在其他地方用左键选中文字,不用右键复制,保持选中文字高亮,然后在putty中点中键 ...
- nginx直接连接操作memcache
原理: Nginx 要设定一个 key 去查 mem ,如果没查到,要有一个回调 php ,并且 key 传给 php. 配置方式: server{ ...
- nginx的Rewrite重写
location /{ if ($remote_addr=192.168.1.100){ //禁止此 ip 访问 ...
- 10-while和dowhile语句
- 将IP表存入SQL里的程序
将IP表存入SQL里的程序 写得比較粗糙,另一点错误,只是能达到效果.请大家測试 create.asp ---------------------------------------------- ...
- Oracle 复制随意表一行的SQL语句(測试Ok)
測试了非常久,网上说的方法非常多,事实上都是错误的.正确的写法: declare cursor rowAll is select * from tb_news where 1=1; row1 tb_n ...
- DevExpress控件的安装及画图控件的使用
近期须要绘制纵断面图,而AE自带的又不是非常好,查找资料后使用DevExpress控件中的画图控件实现了纵断面的绘制.Dev控件是须要付费的.这里我们使用破解版的哈. 安装包及破解文件上传至我的网盘了 ...