内容简介:GIS的空间参考,包含坐标系和其他相关空间属性 。空间参考是用于存储各要素类和栅格数据集,以及其他坐标属性(例如,x,y 坐标的坐标分辨率及可选的 z 坐标和测量 (m) 坐标)的坐标系。如果需要,可使用表示表面高程的 z 坐标为数据集定义一个垂直坐标系。MapView 是 ArcGIS Runtime SDK for Android 的核心组件,通过 MapView 可以呈现地图服务的数据,并且在 MapView 中定义了丰富的属性、方法和事件,用户通过 MapView 可以操作地图,默认 MapView
- 空间参考
GIS的空间参考,包含坐标系和其他相关空间属性 。空间参考是用于存储各要素类和栅格数据集,以及其他坐标属性(例如,x,y 坐标的坐标分辨率及可选的 z 坐标和测量 (m) 坐标)的坐标系。如果需要,可使用表示表面高程的 z 坐标为数据集定义一个垂直坐标系。
-
地图控件
<com.esri.android.map.MapView android:id="@+id/mapView" android:layout_width="match_parent" android:layout_height="match_parent" /> 复制代码
MapView 是 ArcGIS Runtime SDK for Android 的核心组件,通过 MapView 可以呈现地图服务的数据,并且在 MapView 中定义了丰富的属性、方法和事件,用户通过 MapView 可以操作地图,默认 MapView 提供了缩放、ping'yi操作。MapView是Android中ViewGroup的子类,也是 ArcGIS Runtime SDK for Android 中的地图容器 。
MapView 可以添加一个或多个图层,图层又分很多种, 并且图层只有添加到 MapView 容器中才会显示。通过 MapView 可以设置地图的显示范围、是否允许被旋转、地图背景、地图的最大/最小分辨率及其指定当前显示的分辨率/比例尺。MapView还 提供了丰富的手势监听接口,通过这些监听器,可以监听各种手势动作,如点击、双击、移动或长按等操作。
- 图层
图层是 GIS 中很重要的概念,图层是空间数据的载体,通过它可将各种类型的地图数据进行加载显示,是几何图形和其对应属性信息的集合。各种图层尤其自己的作用,下图是图层的继承关系图:
地图图层加载
所有的图层都继承自Layer,地图控件为我们提供了addLayer()方法,所以需要添加图层的时候我们使用addLayer方法将图层添加到map中。
- ArcGISLocalTiledLayer
ArcGISLocalTiledLayer 是用来添加离线数据包的图层,该图层目前支持两种格式的离线数据:一个是紧凑型的缓存切片,另一个是打包的 tpk 格式的数据。
ArcGISLocalTiledLayer tileLayer = new ArcGISLocalTiledLayer("file://" + mapPath + "/" + fileName);//实例化图层 tileLayer.setVisible(false);//控制图层显示与否; tileLayer.setName(fileName);//设置图层的名称 tileLayer.setOpacity();//设置图层的不透明度 mapView.addLayer(tileLayer);//添加图层到地图窗口中 复制代码
- ArcGISTiledMapServiceLayer
ArcGISTiledMapServiceLayer 图层用于显示 ArcGIS for Server 服务中的切片数据, 不能对图层中的数据进行更改,除非更新服务缓存。因为是使用服务切出来的PNG格式的图片数据,在 arcgis for android中,无法对此类型的数据查询,常用做底图使用。 因为是缓存数据,这个类型的图层是请求最快的图层之一。
String url ="https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer"; ArcGISTiledMapServiceLayer serviceLayer=new ArcGISTiledMapServiceLayer(url ); mapView.addLayer(serviceLayer);//添加图层到地图窗口中 复制代码
- ArcGISDynamicMapServiceLayer
ArcGISDynamicMapServiceLayer 图层用于显示动态地图服务的数据,服务端根据移动设备的屏幕显示范围、地图比例尺返回请求数据,用法与 ArcGISTiledMapServiceLayer 图层相同。
ArcGISDynamicMapServiceLayer图层通常包含多个图层,这些图层由 server 根据请求来渲染并以图片形式返回。其功能特点是更新非常方便,并能及时呈现给用户,同时,图层的可视性和空间参考可以改变,可以给图层添加单独的 layer definition,ArcGIS Server 为每个 image 动态投影。而地图的空间参考是由第一个加载的图层决定。
性能特点:它的渲染时间取决于请求数据的数量和复杂度,因此一般都比 tiled map server 要慢,它适合数据经常发生改变、或者需要针对不同的用户呈现不同的数据,且要素信息不需要的情况。
String tiledLayerAddress="http://10.200.3.210:6001/arcgis/rest/services/ranqimap/gw2016_3/MapServer"; ArcGISDynamicMapServiceLayer agsDMS =new ArcGISDynamicMapServiceLayer(tiledLayerAddress); mapView.addLayer(tiledLayerAddress);//添加图层到地图窗口中 复制代码
- ArcGISImageServiceLayer
ArcGISImageServiceLayer 图层用于显示影像服务数据
String url="http://myserver/arcgis/rest/services/MyImage/ImageServer" ArcGISImageServiceLayer imgserviceLayer =new ArcGISImageServiceLayer(url,null);//option mapView.addLayer(tiledLayerAddress);//添加图层到地图窗口中 复制代码
- BingMapLayer
ArcGIS Runtime for Android中也可以添加Bing地图服务,首先必须注册账户并获取Bing map的App ID,有了这个 ID 就有了使用 Bing 地图的权限,具体的账户申请和操作步骤可以参照以下地址: 地址: www.bingmapsportal.com/ 详细说明: msdn.microsoft.com/en-us/libra…
<com.esri.android.map.MapView android:id="@+id/map" android:layout_width="fill_parent" android:layout_height="fill_parent" url="http://www.arcgis.com/home/item.html?id=2b571d8c079d46b4a14a67df42b1da6f" appId=""> </com.esri.android.map.MapView> 复制代码
也可以通过代码的方式动态添加图层:
BingMapsLayer blyr=new BingMapsLayer("你的Bingmap ID",地图风格); mapView.addLayer(blyr);//添加图层到地图窗口中 复制代码
地图风格有如下几种:
AERIAL("Aerial"), AERIAL_WITH_LABELS("AerialWithLabels"), ROAD("Road"); 复制代码
- GraphicsLayer
Graphic 是 ArcGIS Runtime for Android 中比较重要的图层类型,也是使用最为频繁的一个。GraphicsLayer 可以包含一个或多个 Graphic 对象,查询的返回结果和动态标绘的 Graphic 数据都要通过它呈现。建议在 MapView 中添加图层时不要第一个添加该类型的图层,因为 MapView 加载图层时先要初始化一些地图参数,而该图层不具备这些参数。
除了可以呈现 Graphic 对象外,它还具备了一些其他有用的功能,如要素更新与要素获取等等,由类 GraphicsLayer 处理,GraphicsLayer 是由应用程序来定义的图层,专门用来绘制有空间参考的要素,并不适合绘制 non-geographical 要素,如指北针或 copyright text。可以用屏幕坐标来查询图层中的要素并且使getGraphics()方法返回要素,并且支持设置图层比例尺。
不推荐在 graphics layer 中存放太多的要素,但是,它有着不错的性能,并且是 feature layer class的基类,如果必须要处理大量的要素,建议使用 feature collection 来存储在 feature layer 中。
GraphicsLayer graphicsLayer=new GraphicsLayer(); mapView.addLayers(graphicsLayer); 复制代码
- ArcGISFeatureLayer
ArcGISFeatureLayer 显示Feature Service提供的数据,与其它图层类型相比具有最丰富的功能,其中的每个要素都能被查询,和 SQL 语句过滤,继承自 GraphicsLayer。
该图层可以是空间图层,也可以是非空间的表,它包含了很多要素的信息,每个要素单独渲染,从 ArcGIS Server Feature Service 或者 map service(此种 feature layer 不能编辑)中请求要素,并返回 JSON 格式的数据并绘制。加载速度就相对较慢。
只有 Feature Service 才可以具备在线数据编辑功能,如果想要对某个数据进行在线编辑或同步,需要将其发布成 Feature Service,并在移动端新建一个 ArcGISFeatureLayer 图层以加载该服务。该图层有一些设定,这些设定能影响图层的性能,包括请求时间,返回大小、处理和响应时间等(设置需要在图层initialized 完成之后进行)。 ArcGISFeatureLayer 在可以设置 3 种模式(mode),不同模式返回数据的方式和执行的效率不同
String url = "https://servicesbeta.esri.com/ArcGIS/rest/services/SanJuan/TrailConditions/FeatureServer/0"; MapView mv = new MapView(this); mv.addLayer(new ArcGISFeatureLayer(url,MODE.SNAPSHOT));//按照快照方式 复制代码
- 本地矢量数据
FeatureLayer支持两种格式的矢量图层数据(Shp,geodatabase),通用的SHP文件直接可以在里边加载,另外使用ArcMap发布的geodabase数据库文件数据也可以直接打开。我们推荐使用geodatabase数据库文件的数据进行地图的浏览,因为geodatabase数据库数据中包含了简单的符号化。
- 加载SHP文件数据
ShapefileFeatureTable fTab = new ShapefileFeatureTable(dataFile.getAbsolutePath()); FeatureLayer fLayer = new FeatureLayer(fTab); // SimpleFillSymbol fillSymbolRender = new SimpleFillSymbol(Color.parseColor("#")); Renderer renderer = new SimpleRenderer(fillSymbolRender); fLayer.setRenderer(renderer);//图层符号化; mapView.addLayer(fLayer); 复制代码
- 加载geodataabase数据文件
Geodatabase dataBase = new Geodatabase(dataFile.getAbsolutePath()); List<GeodatabaseFeatureTable> gfts = dataBase.getGeodatabaseTables(); if (gfts.size() > 0) { int lyrCnt = gfts.size(); for (int j = lyrCnt - 1; j > -1; j--) { GeodatabaseFeatureTable gft = gfts.get(j); // String layerName = gft.getFeatureServiceLayerName(); FeatureTable tab = (FeatureTable) gft; //featurecount += tab.getNumberOfFeatures(); FeatureLayer featureLayer = new FeatureLayer(tab); featureLayer.setName(tab.getTableName()); featureLayer.setVisible(false); featureLayer.setEnableLabels(true); //Log.i("TabeName",tab.getTableName()); Geometry.Type geoType = featureLayer.getGeometryType(); //Log.i("GeoType", geoType.toString()); //mMapView.addLayer(featureLayer); mapView.addLayer(featureLayer); } } 复制代码
图形绘制
绘制的逻辑:
地图中应该包含绘制层---------->GraphicsLayer 在界面上,点击按钮向系统发送命令-------->需要一个枚举类,存放命令 地图需要监听点击事件 ---------->OnSingleTapListener 每个图形需要一个默认的符号------>Symbol 图形是根据点来绘制的,所以需要保存图形的点数据------->List
以上所述就是小编给大家介绍的《ArcGIS Runtime For Android》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
你必须知道的213个C语言问题
范立锋、李世欣 / 人民邮电出版社 / 2010-6 / 45.00元
《你必须知道的213个C语言问题》精选了213个在C语言程序设计中经常遇到的问题,目的是帮助读者解决在C语言学习和开发中遇到的实际困难,提高读者学习和开发的效率。这些问题涵盖了C语言与软件开发、C语言基础、编译预处理、字符串、函数、键盘操作、文件、目录和磁盘、数组、指针和结构、DOS服务和BIOS服务、日期和时间、重定向I/O和进程命令、C语言开发常见错误及程序调试等内容,均是作者经过充分的调研,......一起来看看 《你必须知道的213个C语言问题》 这本书的介绍吧!
图片转BASE64编码
在线图片转Base64编码工具
XML、JSON 在线转换
在线XML、JSON转换工具