官方Demo中给我们提供了加载在线瓦片数据的功能。
我们在上一节的基础上进行演示。话不多说先上图。

布局文件如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><com.amap.api.maps.MapViewandroid:id="@+id/map"android:layout_width="match_parent"android:layout_height="match_parent"/><Buttonandroid:id="@+id/btn_tile"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/tile_data"/>
</RelativeLayout>
MainActivity中都是按照Demo写的,就不多说了。
package com.example.maptest;import android.app.Activity;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;import com.amap.api.maps.AMap;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.TileOverlay;
import com.amap.api.maps.model.TileOverlayOptions;
import com.amap.api.maps.model.UrlTileProvider;import java.net.URL;public class MainActivity extends Activity implements View.OnClickListener {private MapView mMapView;private Button btn_tile;private AMap aMap;private TileOverlay mtileOverlay;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mMapView = (MapView) findViewById(R.id.map);btn_tile = (Button) findViewById(R.id.btn_tile);//在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图mMapView.onCreate(savedInstanceState);if (aMap == null) {aMap = mMapView.getMap();}//移动中心点到西安aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(34.341568, 108.940174), 10));btn_tile.setOnClickListener(this);}@Overrideprotected void onDestroy() {super.onDestroy();//在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图mMapView.onDestroy();}@Overrideprotected void onResume() {super.onResume();//在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();//在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制mMapView.onPause();}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);//在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),//保存地图当前的状态mMapView.onSaveInstanceState(outState);}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.btn_tile:if (mtileOverlay != null){mtileOverlay.remove();}//在线瓦片数据useOMCMap();break;}}/*** 加载在线瓦片数据*/private void useOMCMap() {final String url = "http://tile.opencyclemap.org/cycle/%d/%d/%d.png";TileOverlayOptions tileOverlayOptions = new TileOverlayOptions().tileProvider(new UrlTileProvider(256, 256) {@Overridepublic URL getTileUrl(int x, int y, int zoom) {try {return new URL(String.format(url, zoom, x, y));} catch (Exception e) {e.printStackTrace();}return null;}});tileOverlayOptions.diskCacheEnabled(true).diskCacheDir("/storage/emulated/0/amap/OMCcache").diskCacheSize(100000).memoryCacheEnabled(true).memCacheSize(100000).zIndex(-9999);mtileOverlay = aMap.addTileOverlay(tileOverlayOptions);}
}
官方介绍的是在线加载瓦片数据。下面我们来学习一下如何加载离线瓦片数据。
首先需要离线tiles文件,有兴趣的可以下载尝试。

tiles离线瓦片数据

然后将其复制到手机的根目录下。
和加载在线瓦片数据比较相似,只是路径变成了本地路径。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><com.amap.api.maps.MapView
        android:id="@+id/map"android:layout_width="match_parent"android:layout_height="match_parent"/><Button
        android:id="@+id/btn_tile"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/tile_data"/><Button
        android:layout_below="@+id/btn_tile"android:id="@+id/btn_offline_tile"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/offline_tile"/><Button
        android:layout_below="@+id/btn_offline_tile"android:id="@+id/btn_clear"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/clear"/>
</RelativeLayout>
MainActivity代码
package com.example.maptest;import android.app.Activity;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;import com.amap.api.maps.AMap;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.TileOverlay;
import com.amap.api.maps.model.TileOverlayOptions;
import com.amap.api.maps.model.UrlTileProvider;import java.net.URL;public class MainActivity extends Activity implements View.OnClickListener {private MapView mMapView;private Button btn_tile;private Button btn_offline_tile;private Button btn_clear;private AMap aMap;private TileOverlay mtileOverlay;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mMapView = (MapView) findViewById(R.id.map);btn_tile = (Button) findViewById(R.id.btn_tile);btn_offline_tile = (Button) findViewById(R.id.btn_offline_tile);btn_clear = (Button) findViewById(R.id.btn_clear);//在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图mMapView.onCreate(savedInstanceState);if (aMap == null) {aMap = mMapView.getMap();}//移动中心点到西安aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(34.341568, 108.940174), 10));btn_tile.setOnClickListener(this);btn_offline_tile.setOnClickListener(this);btn_clear.setOnClickListener(this);}@Overrideprotected void onDestroy() {super.onDestroy();//在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图mMapView.onDestroy();}@Overrideprotected void onResume() {super.onResume();//在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();//在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制mMapView.onPause();}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);//在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),//保存地图当前的状态mMapView.onSaveInstanceState(outState);}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.btn_tile:if (mtileOverlay != null){mtileOverlay.remove();}//在线瓦片数据useOMCMap();break;case R.id.btn_offline_tile:if (mtileOverlay != null){mtileOverlay.remove();}//离线瓦片数据useOfflineTile();break;case R.id.btn_clear://清除所有瓦片if (mtileOverlay != null){mtileOverlay.remove();}break;}}/*** 加载在线瓦片数据*/private void useOMCMap() {final String url = "http://tile.opencyclemap.org/cycle/%d/%d/%d.png";TileOverlayOptions tileOverlayOptions = new TileOverlayOptions().tileProvider(new UrlTileProvider(256, 256) {@Overridepublic URL getTileUrl(int x, int y, int zoom) {try {return new URL(String.format(url, zoom, x, y));} catch (Exception e) {e.printStackTrace();}return null;}});tileOverlayOptions.diskCacheEnabled(true).diskCacheDir("/storage/emulated/0/amap/OMCcache").diskCacheSize(100000).memoryCacheEnabled(true).memCacheSize(100000).zIndex(-9999);mtileOverlay = aMap.addTileOverlay(tileOverlayOptions);}/*** 加载离线瓦片数据*/private void useOfflineTile() {final String url = "file:///storage/emulated/0/tiles/tiles/%d/%d/%d.jpg";TileOverlayOptions tileOverlayOptions = new TileOverlayOptions().tileProvider(new UrlTileProvider(256, 256) {@Overridepublic URL getTileUrl(int x, int y, int zoom) {try {return new URL(String.format(url, zoom, x, y));} catch (Exception e) {e.printStackTrace();}return null;}});tileOverlayOptions.diskCacheEnabled(true).diskCacheDir("/storage/emulated/0/amap/tilecache").diskCacheSize(100000).memoryCacheEnabled(true).memCacheSize(100000).zIndex(-9999);mtileOverlay = aMap.addTileOverlay(tileOverlayOptions);}}

高德地图开发(二)加载瓦片数据相关推荐

  1. 高德地图 Vue 中 加载 数据可视化 Loca 的方式

    高德地图 Vue 中 加载 数据可视化 Loca 的方式 今天想用 Loca 试试如何的,结果怎么都加载不上,我的代码是这样的 AMapLoader.load({key: "这个就不展示了& ...

  2. 高德地图巡航异步加载数据_“高德地图”和“百度地图”的差别

    高德地图"和"百度地图"到底有什么差别?专家:细节定成败! 导读:高德和百度都是做电子地图的,很多人很好奇,高德地图和百度地图的区别是什么.除了开发者不同,两者在数据和功 ...

  3. html 加载高德地图,vue异步加载高德地图

    几种加载js的方式 同步加载 异步加载 延迟加载 同步加载 用的最多的一种方式,又称阻塞模式,会阻止浏览器的后续处理,停止后续的解析,只有当当前加载完成,才能进行下一步操作.所以默认同步执行才是安全的 ...

  4. js室内地图开发_vue加载esmap室内地图

    vue加载esmap室内地图 使用 vue 开发室内地图与传统开发,有些许不同 下载vue-cli2/vue-cli3版地图示例 SDK目前不支持用require js引用,只能使用引用 Tips:使 ...

  5. 高德地图 JS API 加载多个插件

    高德地图javascript api提供以js形式调用api,确实给我们开发者带来了许多方便,但是在使用过程中发现需要使用高德的多个插件,自己试了很久,只能加载一种插件,如果同时其他地方使用其他插件, ...

  6. 高德地图海量点加载自定义fonticon,canvas绘制fonticon

    1.自定义海量点的图标,需要用到AMAPui组件库.2.0版本引入过程: AMapUI.PointSimplifier,绘制引擎的官方文章PointSimplifier.Render.Canvas 2 ...

  7. android高德显示指定位置,高德地图开发(二)地图上显示指定位置

    我们在用地图软件搜索的时候,搜索结果会在地图上以红点显示,现在我们来实现一个在地图上显示指定位置的程序,先看效果图. 要实现这么个功能,首先要能将地图视图中心移动到以指定位置:还有在指定位置绘制一个点 ...

  8. 高德地图开发(二)地图上显示指定位置

    我们在用地图软件搜索的时候,搜索结果会在地图上以红点显示,现在我们来实现一个在地图上显示指定位置的程序,先看效果图. 要实现这么个功能,首先要能将地图视图中心移动到以指定位置:还有在指定位置绘制一个点 ...

  9. QGIS二次开发:加载XYZ Tiles形式的瓦片地图

    1.前言 QGIS官方提供的QGIS.exe可以加载远程地图提供商提供的基于URL格式的XYZ Tiles形式的瓦片地图.如:https://tile.openstreetmap.org/{z}/{x ...

最新文章

  1. [轉]fckeditor添加自定义按钮
  2. 与IO相关的等待事件troubleshooting-系列9
  3. SVN 出错信息汇总/错误信息一览表
  4. oracle 11.2.0.3.4 psu 14275605 下载,Oracle RAC 11.2.0.3.2 升级 11.2.0.3.4
  5. ipv4地址是几位二进制数_知识点| ip地址详解,小学生都看的懂
  6. MFC多线程失败:Create Instance failed
  7. 真正的mybatis_redis二级缓存
  8. spark学习-33-Spark的RPC通信源码分析
  9. [专栏精选]Unity中编码Encoding脱坑指南
  10. 2010年3月份第二周51aspx发布源码
  11. 横向比较图像标注中的两种基于近邻思想的方法 TagProp和SGSSL
  12. linux查找当前目录下所有子目录特定文件类型
  13. 也许你并不了解 java.lang.String | JDK 11 源码阅读分析(灌水)与优化实测
  14. 创新设计思维介绍,理解,以及学习体会
  15. NeRF 神经辐射场
  16. 十年后再读《轻公司》
  17. L1-040 最佳情侣身高差 (10 分)java
  18. MapReduce概述及工作流程
  19. overhit用户服务器维护,overhit新手引导任务小技巧
  20. 【取模软件PCtoLCD2002使用教程】

热门文章

  1. Linux IP、DNS、Route配置
  2. C++ Builder开发AutoCAD应用程序的方法
  3. 条形码二维码标签编辑打印软件
  4. OBS Studio 27.0.1版本编译
  5. 安卓修改电池容量教程_手机电池校正 - 安卓最精确的电量校正方法 - iTeknical
  6. 5GCPE如何支持4G物联网卡(修改IMEI)
  7. ShowType=0,交换机命令showinterfacestype0/port_#switchport|trunk用于显 - 信管网
  8. 2020倒计时,大厂核心送给每一个脚踏实地努力着的Android程序员,逆风前行
  9. 电脑(伪)大神装B必备,来学几个windows脚本命令
  10. 工作一般预留什么邮箱? 注册工作邮箱谨防几大雷区!