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的使用相关推荐

  1. ArcGIS for Android 100.3.0(10):Callout的使用

    通过调用从MapView的getCallout()获取Callout对象. 官方API: https://developers.arcgis.com/android/latest/api-refere ...

  2. arcgis for Android 100.3.0 加载shp数据以及操作

    ArcGIS Runtime 100.2.0的正式发布带来个更多移动端的处理地图的能力,例如支持WMS图层.支持海图(ENC)图层,再如基于场景相机(Camera)的视域分析.同时还提供了新的统计查询 ...

  3. ArcGIS for Android 100.3.0(20):加载天地图

    天地图官网: http://lbs.tianditu.gov.cn/home.html 需要到天地图官网去创建应用,申请应用Key. 对天地图和ArcGIS参数不太清楚的可以参考: http://bl ...

  4. ArcGIS for Android 100.3.0(9):GPS定位

    ArcGIS Runtime 100定位类--LocationDisplay 其官方解释为:管理当前位置在显示地图里的展示,包括当前位置的信息,符号,以及随地图的平移.旋转.缩放等进行自动变化. 也就 ...

  5. ArcGIS for Android 100.3.0(6):动态地图图层(ArcGISMapImageLayer和ArcGISMapImageSublayer)

    动态地图图层ArcGISMapImageLayer是通过访问动态地图服务MapService获取的,里面包含的是一个子图层集合SublayerList,通过这个子图层集合可以构造得到每个动态地图图层A ...

  6. arcgis for Android 100.2 绘制点线面(文末有三维地图)

    这是这阶段arcgis for Android 的最后一篇了,前面有三篇.对于我经常使用坐标,进行绘制点线面图形的程序员,这个必须要的.因为在项目中经常用到. arcgis for Android 1 ...

  7. arcgis for Android 100.1 在线加载天地图和谷歌地图

    距离上一篇arcgis for Android 已经很久.其实年初的时候就测试了arcgis for Android 100.1版本.搜集网上各篇文章,最后自已测试代码.修改代码.这一篇来讲一下加载在 ...

  8. mmpk文件的打包与加载(ArcGIS for Android 100.x)

    一.mmpk文件的生成 移动地图包是一个以".mmpk"结尾的单独文件扩展,它可以将你的组织的maps.资源.道路网.或者坐标集成到一个文件.根据这些数据你的用户就可以清楚自己的方 ...

  9. arcgis for Android 100.4 面积测量

    arcgis for Android 100.4 面积测量为负时进行拓扑简化就行了.

最新文章

  1. python拍7游戏代码_Python基础语法-7(小游戏)
  2. 两个超长正整数的加法c语言,二个超长正整数的相加
  3. Boost:fork联接的测试程序
  4. Linux 释放cpugpu内存、显存和硬盘
  5. perl大骆驼和小骆驼_快速的骆驼和云消息传递
  6. 【HDU - 1241】Oil Deposits (连通块问题 属于求大海中的岛屿个数 类似问题)
  7. linux非阻塞等待线程,linux – 即使异步I / O操作挂起,只有线程处理io_service正在等待...
  8. npm上传自己的项目
  9. R语言学习 - 热图美化 (数值标准化和调整坐标轴顺序)
  10. Nginx 的配置文件介绍
  11. cisco 2960 VLAN MAC_Mac翻译系列软件推荐一:欧路词典 for Mac
  12. Java高并发编程详解系列-线程上下文设计模式及ThreadLocal详解
  13. 阿里涉足零售 IoT 的猜想
  14. linux内核阅读感悟,读Kernel感悟-Linux内核启动-从hello world说起
  15. 网页自动关机代码HTML,电脑怎么设置自动关机时间
  16. 打算开源一个低代码平台,包含【工作流,业务流,财务,APQC】。技术站 React,typescript,java,mysql
  17. Mixly米思齐——超声波测距控制LED灯
  18. PS2022免安装绿色版
  19. 万象优鲜生鲜配送系统源码
  20. 我运营公众号这一个月

热门文章

  1. 阿里P7面试题及答案
  2. LeedCode 思维训练(二)
  3. 小数如何转化为二进制
  4. 每日一道leetcode题 82.删除排序链表中的重复元素
  5. 微信小程序——个人相册(前端)
  6. sklearn中的KMeans算法
  7. 李开复谈学习:学会“无师自通”
  8. 补贴来了 | 人社部:获得这些证书,国家有补贴
  9. 凸包 Graham扫描法 TOJ 1255 Surround the TreesTOJ 3100 女生寝室的围墙
  10. HTTP Header