大型情感类电视连续剧--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高德之旅(1)基础地图
总要说几句 两年前只有少数o2o软件.导航.交通软件会集成LBS,而现在是个软件都要集成LBS,所以作为开发的我们终于不能忍了,最近稍微有一点时间,来搞搞LBS吧,目前用的最多的是百度地图和高德地图, ...
- 高德地图android4,Android高德之旅(4)我的位置
废话 说到吃饭,最近刚开了一家...咳咳,说到位置定位,主要包含两部分,第一个是根据GPS获取经纬度,第二是根据经纬度获取省市区行政区划.先说第一个,使用过地图导航的都知道,定位我的位置通常是一个蓝色 ...
- android高德地图线段的纹理,Android高德之旅(8)绘制线
废话 绘制线会比绘制点稍微复杂点,抛开一些复杂的属性不谈,主要分为三类:实线.虚线.纹理.绘制线在自定义地图中是非常重要的一个环节. 简单的api 看下api你会发现,绘制实线.虚线.纹理都是调用一个 ...
- 百度android定位 602 key mcode不匹配,我的Android进阶之旅------百度地图学习:BDLocation.getLocType ( )值分析...
BDLocation类,封装了定位SDK的定位结果,在BDLocationListener的onReceive方法中获取.通过该类用户可以获取error code,位置的坐标,精度半径等信息.具体方法 ...
- 我的Android进阶之旅------百度地图学习:BDLocation.getLocType ( )值分析
BDLocation类,封装了定位SDK的定位结果,在BDLocationListener的onReceive方法中获取.通过该类用户可以获取error code,位置的坐标,精度半径等信息.具体方法 ...
- Android探索之旅 | 面向对象和Java基础
-- 作者 谢恩铭 转载请注明出处 上一篇 Android探索之旅 | Android简介 中说到: "Android的默认开发语言是Java,入门简单.而且,你的Java水平不需要多好就可 ...
- Android开发之旅:环境搭建及HelloWorld
2019独角兽企业重金招聘Python工程师标准>>> 引言 本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Andr ...
- Android开发之旅:应用程序基础及组件
--成功属于耐得住寂寞的人,接下来几篇将讲述Android应用程序的原理及术语,可能会比较枯燥.如果能够静下心来看,相信成功将属于你. 引言 为了后面的例子做准备,本篇及接下来几篇将介绍Android ...
- Android开发之旅:HelloWorld项目的目录结构
引言 前面Android开发之旅:环境搭建及HelloWorld,我们介绍了如何搭建Android开发环境及简单地建立一个HelloWorld项目,本篇将通过HelloWorld项目来介绍Androi ...
最新文章
- IOS开发错误library not found for -lXXX
- 如何在Node.js中退出
- 用python实现远程复制 (scp + expect )
- centos下cmake安装
- 小白来学C语言之宏定义(#define)
- WASM 成为 HTML、CSS 与 JS 之后的第 4 门 Web 语言
- 下c语言实现wc_用 Python 实现词云可视化
- Android自己写的三款实用开关控件
- 【一分钟论文】Deep Biaffine Attention for Neural Dependency Parsing
- 分布式系统常见的事务处理机制
- 快速开发jQuery插件的10大技巧(转)
- go1.5源代码安装
- WinRAR各版本许可注册码
- Apache Echarts实现矢量地图
- 软件需求分析文档模板
- CreateThread()和_beginthread()有什么不同?
- 手机个人热点连接台式计算机,电脑怎么连接手机个人热点
- matlab在投资中的应用,实验三 MATLAB在投资组合中的应用(答案)
- 全国省市县数据库脚本
- 学而思css动画使用