安卓智能地图开发与实施六:离线基础底图 - ArcGIS Runtime SDK for Android(Version 100.0.0)
离线基础底图(Offline Tiled Layers)
离线基础底图最传统的方式是直接拷贝ArcGIS Server服务的切片成果,存在的问题是无论使用松散型还是紧凑型都包含太多碎小文件,部署不便。TPK文件便是为了解决多碎小文件问题。但是依然存在文件太大的问题,动辄十G甚至几十G。而矢量切片(VTPK)在于解决文件太大的问题。
TPK
对于TPK的生产,建议使用ArcGIS Desktop进行生成,对于自定义切片级别(Level of Detail)较为自如。ArcGIS Desktop也可以通过模型构建器将两个工具合为一个。使用ArcGIS Pro,若想自定义切片级别(Level of Detail)需要找个地图服务来支持。
TPK和服务切片文件夹调用类似,只是文件路径不同。
TPK:/sdcard/Hymn/basemap/basemap.tpk
服务切片文件夹:/sdcard/Hymn/basemap/gxksl2016
package hymn.esrichina.displayamapusingtpk;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;import com.esri.arcgisruntime.data.TileCache;
import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
import com.esri.arcgisruntime.mapping.ArcGISMap;
import com.esri.arcgisruntime.mapping.Basemap;
import com.esri.arcgisruntime.mapping.view.MapView;public class MainActivity extends AppCompatActivity {private MapView mainMapView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);try {String theOfflineTiledLayers = "/sdcard/Hymn/basemap/ImageBasemap.tpk";mainMapView = (MapView) findViewById(R.id.mainMapView);TileCache mainTileCache = new TileCache(theOfflineTiledLayers);ArcGISTiledLayer mainArcGISTiledLayer = new ArcGISTiledLayer(mainTileCache);Basemap mainBasemap = new Basemap(mainArcGISTiledLayer);ArcGISMap mainArcGISMap = new ArcGISMap(mainBasemap);mainMapView.setMap(mainArcGISMap);}catch (Exception e){}}
}
如何生产TPK参考:
- ArcGIS Pro
http://pro.arcgis.com/zh-cn/pro-app/tool-reference/data-management/create-map-tile-package.htm
- ArcGIS Desktop
http://desktop.arcgis.com/zh-cn/arcmap/latest/tools/data-management-toolbox/create-map-tile-package.htm
VTPK
和上章节“在线矢量切片”使用类似,只是将在线地址更换为了本地文件。例如:
/sdcard/nxgt/basemap/dzzhdjfb.vtpk
package hymn.esrichina.displayamapusingvtpk;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
import com.esri.arcgisruntime.layers.ArcGISVectorTiledLayer;
import com.esri.arcgisruntime.mapping.ArcGISMap;
import com.esri.arcgisruntime.mapping.Basemap;
import com.esri.arcgisruntime.mapping.view.MapView;public class MainActivity extends AppCompatActivity {private MapView mainMapView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);try {String theOfflineTiledLayers = "/sdcard/Hymn/basemap/dzzhdjfb.vtpk";mainMapView = (MapView) findViewById(R.id.mainMapView);ArcGISVectorTiledLayer mainArcGISVectorTiledLayer = new ArcGISVectorTiledLayer(theOfflineTiledLayers);Basemap mainBasemap = new Basemap(mainArcGISVectorTiledLayer);ArcGISMap mainArcGISMap = new ArcGISMap(mainBasemap);mainMapView.setMap(mainArcGISMap);}catch (Exception e){String eResult = e.getMessage();}}
}
如何生产VTPK参考:
http://pro.arcgis.com/zh-cn/pro-app/tool-reference/data-management/create-vector-tile-package.htm
MMPK(Basemap)
通过ArcGIS Pro可以制作包含基础底图(Basemap)的MMPK,MMPK文件解析后,基础底图(Basemap)中的图层会解析为MobileBasemapLayer,只提供浏览功能。当然,亚洲字符的支持情况在安卓端不是特别好。
package hymn.esrichina.displayamapusingmmpkbasemap;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;import com.esri.arcgisruntime.loadable.LoadStatus;
import com.esri.arcgisruntime.mapping.ArcGISMap;
import com.esri.arcgisruntime.mapping.Basemap;
import com.esri.arcgisruntime.mapping.LayerList;
import com.esri.arcgisruntime.mapping.MobileMapPackage;
import com.esri.arcgisruntime.mapping.view.MapView;import java.util.List;public class MainActivity extends AppCompatActivity {private MapView mainMapView;private MobileMapPackage mainMobileMapPackage;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);try {String mainMMPKPath = "/sdcard/Hymn/basemap/MobileBasemapLayer.mmpk";mainMapView = (MapView) findViewById(R.id.mainMapView);mainMobileMapPackage =new MobileMapPackage(mainMMPKPath);mainMobileMapPackage.loadAsync();mainMobileMapPackage.addDoneLoadingListener(new Runnable() {@Overridepublic void run() {LoadStatus mainLoadStatus = mainMobileMapPackage.getLoadStatus();if (mainLoadStatus == LoadStatus.LOADED) {List<ArcGISMap> mainArcGISMapL = mainMobileMapPackage.getMaps();ArcGISMap mainArcGISMap = mainArcGISMapL.get(0);Basemap mainBasemap = mainArcGISMap.getBasemap();LayerList mainMMPKLL = mainArcGISMap.getOperationalLayers();mainMapView.setMap(mainArcGISMap);}}});} catch (Exception e) {}}
}
解析结果以MobileBasemapLayer对象包含在ArcGISMap对象的Basemap中。
如何生产MMPK,可以参考:
http://pro.arcgis.com/zh-cn/pro-app/tool-reference/data-management/create-mobile-map-package.htm
结尾
源程序包含:
DisplayAMapUsingMMPKBasemap
DisplayAMapUsingTPK
DisplayAMapUsingVTPK
请自行下载:
链接:http://pan.baidu.com/s/1o8BbX1K 密码:0162
若失效,可发邮件给韩源萌(polyline@126.com)索要。
安卓智能地图开发与实施六:离线基础底图 - ArcGIS Runtime SDK for Android(Version 100.0.0)相关推荐
- 安卓智能地图开发与实施五:在线基础底图 - ArcGIS Runtime SDK for Android(Version 100.0.0)
基础底图 移动地图程序的基础,在于"一张图",外业调绘.导航类.成果展示.统计应用等都需要一张基本的底图来支撑.往往底图的好坏决定了整个移动地图的根基. 在线基础底图(Online ...
- 《ArcGIS Runtime SDK for Android开发笔记》
开发笔记之基础教程 ArcGIS Runtime SDK for Android 各版本下载地址 <ArcGIS Runtime SDK for Android开发笔记>--(1).And ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(6)、基于Android Studio的ArcGIS Android工程结构解析...
1.前言 Android Studio 是第一个Google官方的 Android 开发环境.其他工具,例如 Eclipse,在 Android Studio 发布之前已经有了大规模的使用.为了帮助开 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据同步...
1.前言 上一篇文章中我们实现了离线要素的编辑操作,这一篇中主要介绍离在线一体化技术中最后一个环节离线数据的同步功能,通过对数据的上传,服务器端的版本化管理,实现数据生产管理的整个流程. 转载请注明出 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据编辑...
1.前言 在上一篇我们已经实现了离线地理数据库的下载,这一篇我们着重介绍离线数据库的加载与编辑. 由于ArcGIS Runtime SDK for Android 10.2.X版本并没提供要素绘制功能 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据下载...
1.前言 1.1.环境准备: ArcGIS for Desktop 10.4.1(10.2.1以上版本即可) ArcGIS for Server 10.4.1 (10.2.1以上版本即可) Postg ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(9)、空间数据的容器-地图MapView
1.前言 在上一篇内容里介绍了 关于ArcGIS Android开发的未来("Quartz"版Beta)相关内容,期间也提到了关于API接口的重构,开发思路的调整,根据2015UC ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)...
1.前言 在上一篇的内容里我们介绍了基于Android Studio构建ArcGIS Runtime SDK for Android开发环境的基本流程,流程中我们采用的是基于Gradle的构建方式,在 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(8)、关于ArcGIS Android开发的未来(“Quartz”版Beta)...
1.前言 今天再一次在官网看到了ArcGIS Runtime SDK for Android下一个版本"Quartz"版的更新资料,它将是一个非常重要的更新,包括API接口的重构和 ...
最新文章
- 设计模式解析(五)——几种设计模式之Facade和Adapter
- k8s概念入门之kube-proxy-针对1.1版本阅读
- addhandler php5-script php,htaccess和AddType/Addhandler
- VC动态链接数据库类ADOConn
- row number函数_Hive排名函数ROW_NUMBER,RANK 和 DENSE_RANK的区别
- 「技术人生」第6篇:技术同学应该如何理解业务?
- 小程序中利用Moment.js格式时间
- ajaxutil java,Ajax的工具类AjaxUtils,使用struts返回Json类型
- 2月第3周全球五大顶级域名总量净减6.1万个 降幅明显
- HandlerThread原理和实际应用
- Restful规范-开发api接口
- 下载debian老版本的链接
- 使用Visual Paradigm画ER图/Visual ER图
- 手把手指导安装微PE WePE 系统到U盘
- python十六进制转pcap文件_python处理pcap文件——数据提取
- UWB定位系统在冬奥会上满足哪些需求
- python读写excel的图片_Python读取excel中的图片完美解决方法
- 基于微信小程序的充电桩预约管理系统的设计与实现(论文+源码)_kaic
- 伸展树(一) - 图文解析与C语言实现
- kali linux桌面图标不显示,Kali Linux(Debian) 图标不显示 原因与解决方法-博客
热门文章
- 什么是亚马逊kyc审核?
- Ubuntu python3.6的安装
- spring boot项目实现向两张关联表同时插入数据到Mysql数据库
- 计算机桌面模糊了,电脑桌面模糊的解决方法
- 分段二次插值的matlab程序,一维优化方法之二次插值法matlab程序
- java实现图片合成gif图——输出到具体路径或流数据上传
- 安装spconv踩的坑
- 计算机科学家尼.沃思,瑞士计算机科学家尼·沃思曾经说过,计算机科学就是研究_______的学问。...
- 因一次骑行的脸刹着地,诞生了自动驾驶自行车!不愧是野生钢铁侠!太硬核了~~~...
- 涨姿势:在线黑科技小工具,方便快捷