大型情感类电视连续剧--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应用程序理论进入实 ...
随机推荐
- FZOJ--2214--Knapsack problem(背包)
Problem 2214 Knapsack problem Accept: 5 Submit: 8 Time Limit: 3000 mSec Memory Limit : 32768 K ...
- java9新特性-8-语法改进:钻石操作符(Diamond Operator)使用升级
1.使用说明 我们将能够与匿名实现类共同使用钻石操作符(diamond operator) 在java8中如下的操作是会报错的: 编译报错信息:'<>' cannot be used ...
- SparkCore基础(二)
* SparkCore基础(二) 继续探讨SparkCore,开门见山,不多废话. SparkApplication结构探讨 包含关系: 之前我们运行过很多App了,其实每一个App都包含若干个Job ...
- pyton写购物车
pyton写购物车 基本要求: 用户输入工资,然后打印购物菜单用户可以不断的购买商品,直到余额不够为止退出时打印用户已购买的商品和剩余金额.. 1.这个程序功能不完整,bug很多,练手之作. good ...
- 关于iOS适配问题
大家都知道在iOS开发当中对于UI适配问题可以从如下两个方面去考虑: 1.比例适配 2.利用autolayout自动布局 通常情况来说,利用auto自动布局是一个比较好的方案,开发者可以利用story ...
- vuejs fatherandson
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- codeforces 527 C Glass Carving
Glass Carving time limit per test 2 seconds Leonid wants to become a glass carver (the person who cr ...
- 雅礼集训1-9day爆零记
雅礼集训1-9day爆零记 先膜一下虐爆我的JEFF巨佬 Day0 我也不知道我要去干嘛,就不想搞文化科 (文化太辣鸡了.jpg) 听李总说可以去看(羡慕)各路大佬谈笑风声,我就报一个名吧,没想到还真 ...
- OpenJDK源码研究笔记(八)-详细解析如何读取Java字节码文件(.class)
在上一篇OpenJDK源码研究笔记(七)–Java字节码文件(.class)的结构中,我们大致了解了Java字节码文件的结构. 本篇详细地介绍了如何读取.class文件的大部分细节. 1.构造文件 ...
- 05002_Linux的安装
1.虚拟机VMware workstation的安装 (1)下载链接:VMware workstation下载 密码:52wt: (2)双击VMware-workstation-full-10.0.2 ...