总要说两句

今天继续我们的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. rest_framework 解析器(下 全局配置使用)

    解析器 一般都是全局设置 参考文档 www.cnblogs.com/wupeiqi/articles/.html REST_FRAMEWORK=( "DEFAULT_PARSER_CLASS ...

  2. POJ 3277 线段树+扫描线

    题意: 思路: 线段树求矩形面积的并...同 POJ 1151 //By SiriusRen #include <cstdio> #include <algorithm> us ...

  3. jsp输出金字塔

    <% String str = ""; for(int i = 1; i <= 5; i++){ for(int j = 1; j <= 5-i; j++){ s ...

  4. [转]Adobe Creative Cloud 2015 下载 Adobe CC 2015 Download

    Adobe Creative Cloud 2015 下载   Adobe 宣布 Creative Cloud 设计套件全线更新! Adobe CC 2015新功能包括: – Premiere Pro ...

  5. 程序Yuan,eclipse你,会用吗?

    程序Yuan,用eclipse敲代码时还在使用alt+/吗,还在为格式化代码ctrl+shift+f快捷键不快捷发愁吗? 如果是,那么这篇就适合你,请继续往下看. ①设置代码提示快捷键         ...

  6. UI Framework-1: Aura Views

    Views Views is a user interface framework built on a type called, confusingly, View. Responsible for ...

  7. mongodb 主从

    mongodb 主从 因为条件限制我们把主从放在一台服务器上面 相关参数 在启动从的时候可以增加以下参数 --autoresync 当发现从服务器的数据不是最新时,开始从主服务器请求同步数据 --sl ...

  8. 同门不同类—创新Aurvana Live2/Air简评(附随身视听设备心路历程)

    (注,本文把live2/air并成一起写的,同时本人是木耳,请轻拍) 本命年各种坏东西,很是无语,终于坏到耳塞耳机了来了,之前用的拜亚DT235无缘无故就一边不响了,无奈只能扔了. 纠结了好几个月,终 ...

  9. WPF获得PNG图片外观Path数据

    原文:WPF获得PNG图片外观Path数据        WPF开发界面的时候,用的最多的就是自定义控件模板,开发人员需要根据UI的设计,做出符合要求的自定义控件.但是在一些特殊情况下,UI的设计可能 ...

  10. Unity 框架(一)

    当项目需求中,后期可能接入多种输入设备的时候,可以借鉴一下以下代码 using System.Collections; using System.Collections.Generic; using ...