ArcGIS for Android 100.3.0(14):移动地图包MMPK的使用
MobileMapPackage
移动地图包是ArcGIS Pro里新推出的一种离线地图数据,配合ArcGIS Runtime 100使用。
移动地图包是一个以“.mmpk”结尾的单独文件扩展,它可以将你的组织的maps、资源、道路网、或者坐标集成到一个文件。根据这些数据你的用户就可以清楚自己的方向,知道什么是他们所需要的,探索它们的附近的区域、有效的利用他们的资源去工作。地图数据包格式是面向当前手机设备的最佳格式,它小而快速,因为它是被压缩的且容易分享。相比于传统的地图包(tpk、vtpk等),它保存所有的feature要素。
mmpk可以将各种地图和数据资源打包,其中也包括矢量切片数据,同时这种格式地图包可轻松部署到终端使用,由于数据是存储于压缩的mobile GDB中,底图上展示的内容都是要素,可供查询和分析,同时支持路径规划、地址编码等高级分析应用。移动地图包支持离线应用。移动地图包既解决了移动端符号渲染问题,又结合矢量切片底图解决了地图包过大的问题,支持离线的查询、分析等各种应用场景。
MMPK文件里,我们可以直接读取的是ArcGISMap,也就是整个地图内容。就比如在桌面端渲染好的地图,无论是多少层,都可以直接打包在MMPK文件里,而我们在移动端可以直接读取出整个地图内容,直接加载就可以。
移动地图包的加载
mMapView = (MapView) findViewById(R.id.mapview);final String mmpkPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/SanFrancisco.mmpk";final MobileMapPackage mobileMapPackage = new MobileMapPackage(mmpkPath);mobileMapPackage.loadAsync();mobileMapPackage.addDoneLoadingListener(new Runnable() {@Overridepublic void run() {if (mobileMapPackage.getLoadStatus() == LoadStatus.LOADED) {List<ArcGISMap> maps = mobileMapPackage.getMaps();ArcGISMap arcGISMap = maps.get(0); //地图里包含了的一个底图层和两个业务图层mMapView.setMap(arcGISMap);Basemap basemap = arcGISMap.getBasemap();LayerList operationalLayers = arcGISMap.getOperationalLayers();}}});
这个地图里包含了的一个底图层和两个业务图层,通过我们的移动地图包数据,直接一步就加载好,因为移动数据包不仅包含地图展示所需的所有图层,也包含他们图层的顺序,因此使用起来非常方便。
如果要获取这里面的每个图层也很方便,只需要用ArcGISMap.getBaseMap()或者ArcGISMap.getOperationalLayers()即可。
移动地图包的空间查询
对于移动地图包,它的另一个特点就是保存了所有的feature要素,因此也可以进行空间查询。以空间查询举个例子:
//查询mMapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mMapView) {@Overridepublic boolean onSingleTapConfirmed(MotionEvent e) {final Point mapPoint = mMapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));QueryParameters parameters = new QueryParameters();parameters.setGeometry(mapPoint);FeatureLayer featureLayer = (FeatureLayer) mMapView.getMap().getOperationalLayers().get(0);FeatureTable featureTable = featureLayer.getFeatureTable();final ListenableFuture<FeatureQueryResult> future = featureTable.queryFeaturesAsync(parameters);future.addDoneListener(new Runnable() {@Overridepublic void run() {try {FeatureQueryResult featureQueryResult = future.get();for (Feature feature : featureQueryResult) {if (feature instanceof Feature) {Feature mFeatureGrafic = (Feature) feature;Geometry geometry = mFeatureGrafic.getGeometry();GraphicsOverlay graphicsOverlay = new GraphicsOverlay();SimpleMarkerSymbol pointSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.DIAMOND, Color.RED, 10);SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.DASH, Color.GREEN, 10);Graphic pointGraphic = new Graphic(mapPoint, pointSymbol);Graphic fillGraphic = new Graphic(geometry, lineSymbol);graphicsOverlay.getGraphics().add(pointGraphic);graphicsOverlay.getGraphics().add(fillGraphic);mMapView.getGraphicsOverlays().add(graphicsOverlay);Map<String, Object> mQuerryString = mFeatureGrafic.getAttributes();for (String key : mQuerryString.keySet()) {Log.e("xyh" + key, String.valueOf(mQuerryString.get(key)));}}}} catch (InterruptedException e1) {e1.printStackTrace();} catch (ExecutionException e1) {e1.printStackTrace();}}});return true;}});}
由这两个例子,我们看出为啥说MMPK是当前手机设备最佳数据格式了。
首先加载非常方便,其渲染效果和桌面端完全一致,无需在移动端里再多次调整;
其次它支持切片,所以加载渲染速度快,又保留了fearture信息,支持空间属性查询,可谓是集成了TPK和geodatabase两种数据的有点;
最后采用了新的压缩方式,所以数据量很小,我刚举例的两个数据也才分别不过30M和6M。
ArcGIS for Android 100.3.0(14):移动地图包MMPK的使用相关推荐
- ArcGIS for Android 100.3.0(10):Callout的使用
通过调用从MapView的getCallout()获取Callout对象. 官方API: https://developers.arcgis.com/android/latest/api-refere ...
- arcgis for Android 100.3.0 加载shp数据以及操作
ArcGIS Runtime 100.2.0的正式发布带来个更多移动端的处理地图的能力,例如支持WMS图层.支持海图(ENC)图层,再如基于场景相机(Camera)的视域分析.同时还提供了新的统计查询 ...
- ArcGIS for Android 100.3.0(20):加载天地图
天地图官网: http://lbs.tianditu.gov.cn/home.html 需要到天地图官网去创建应用,申请应用Key. 对天地图和ArcGIS参数不太清楚的可以参考: http://bl ...
- ArcGIS for Android 100.3.0(9):GPS定位
ArcGIS Runtime 100定位类--LocationDisplay 其官方解释为:管理当前位置在显示地图里的展示,包括当前位置的信息,符号,以及随地图的平移.旋转.缩放等进行自动变化. 也就 ...
- ArcGIS for Android 100.3.0(6):动态地图图层(ArcGISMapImageLayer和ArcGISMapImageSublayer)
动态地图图层ArcGISMapImageLayer是通过访问动态地图服务MapService获取的,里面包含的是一个子图层集合SublayerList,通过这个子图层集合可以构造得到每个动态地图图层A ...
- arcgis for Android 100.2 绘制点线面(文末有三维地图)
这是这阶段arcgis for Android 的最后一篇了,前面有三篇.对于我经常使用坐标,进行绘制点线面图形的程序员,这个必须要的.因为在项目中经常用到. arcgis for Android 1 ...
- arcgis for Android 100.1 在线加载天地图和谷歌地图
距离上一篇arcgis for Android 已经很久.其实年初的时候就测试了arcgis for Android 100.1版本.搜集网上各篇文章,最后自已测试代码.修改代码.这一篇来讲一下加载在 ...
- mmpk文件的打包与加载(ArcGIS for Android 100.x)
一.mmpk文件的生成 移动地图包是一个以".mmpk"结尾的单独文件扩展,它可以将你的组织的maps.资源.道路网.或者坐标集成到一个文件.根据这些数据你的用户就可以清楚自己的方 ...
- arcgis for Android 100.4 面积测量
arcgis for Android 100.4 面积测量为负时进行拓扑简化就行了.
最新文章
- python拍7游戏代码_Python基础语法-7(小游戏)
- 两个超长正整数的加法c语言,二个超长正整数的相加
- Boost:fork联接的测试程序
- Linux 释放cpugpu内存、显存和硬盘
- perl大骆驼和小骆驼_快速的骆驼和云消息传递
- 【HDU - 1241】Oil Deposits (连通块问题 属于求大海中的岛屿个数 类似问题)
- linux非阻塞等待线程,linux – 即使异步I / O操作挂起,只有线程处理io_service正在等待...
- npm上传自己的项目
- R语言学习 - 热图美化 (数值标准化和调整坐标轴顺序)
- Nginx 的配置文件介绍
- cisco 2960 VLAN MAC_Mac翻译系列软件推荐一:欧路词典 for Mac
- Java高并发编程详解系列-线程上下文设计模式及ThreadLocal详解
- 阿里涉足零售 IoT 的猜想
- linux内核阅读感悟,读Kernel感悟-Linux内核启动-从hello world说起
- 网页自动关机代码HTML,电脑怎么设置自动关机时间
- 打算开源一个低代码平台,包含【工作流,业务流,财务,APQC】。技术站 React,typescript,java,mysql
- Mixly米思齐——超声波测距控制LED灯
- PS2022免安装绿色版
- 万象优鲜生鲜配送系统源码
- 我运营公众号这一个月