安卓智能地图开发与实施六:离线基础底图 - 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接口的重构和 ...
最新文章
- docfetcher,filelocator使用
- Scala语言编写的爬虫应用-爬取一部小说
- 如何在ubuntu下使用samba创建共享
- 1010.在线视频—开源网管Nagios(三)使用Nagios监控服务器
- some learning
- android设置输入框输入字符限制,Android里限制EditText控件可以输入字符内容的范围的方法...
- 【Notes9】Linux系统启动过程,数据库,驱动,i2c-tools,shell
- linux下删除乱码文件名的方法
- JAVA File转Byte[]
- Character.digit()详解
- Android 11 状态栏电池图标的定制
- springboot二手交易平台 毕业设计-附源码290915
- vb.net LPT端口 开钱箱和小票纸打印超时问题解决办法
- 关于生产报表工具—行列视(RCV)的答疑
- kafka安装及使用
- 福州市仓山区融丰锦秀山庄别墅设计
- 考研政治:马克思主义基本原理
- 解决Vmware 16安装Windows7后安装VMware tools选项为灰色及无法成功安装问题
- 条理清晰的入门:使用Java实现RSA加密解密
- 微信HOOK 删除好友
热门文章
- 微信小程序哪个能唱歌_微信K歌最实用的小程序有哪些?求推荐几个有意思的!...
- 我来到博客大世界啦!
- 软件构造Lab2总结
- 温习翻阅必备---java筑基期知识大全--“基础不牢,地动山摇”
- “入坑”自媒体写作,我有干货与你分享
- 《中国哲学史大纲》读书笔记
- 【总结】IDEA和Eclipse的比较
- Flutter学习第十四天:Flutter类似于淘宝的首页照片墙功能,让你的界面更加美观灵活?
- linux nat和网桥多网卡,linux 双网卡 NAT共享上网
- houdini计算机语言,Houdini VEX语言快速入门教程MIXTRAINING-PATREON Houdini Nature of Vex