《ArcGIS Runtime SDK for Android开发笔记》——(9)、空间数据的容器-地图MapView

0
分享 2016-05-30
1、前言
在上一篇内容里介绍了 关于ArcGIS Android开发的未来(“Quartz”版Beta) 相关内容,期间也提到了关于API接口的重构,开发思路的调整,根据2015UC资料也可以知道新版预计将在明年的时候推出。届时在开发思路上将会往新版迁移。 
总的来说,虽然“Quartz”版的开发思路有所变化,但总体变化不大,这里我将继续以现有正式发布版本为主梳理ArcGIS Runtime SDK for Android 开发内容。
参考API版本号:version 10.2.7。后续内容若不做特殊说明,均为此版本。
2、空间数据的容器
2.1、地图组件MapView概述
地图组件是所有空间数据的容器,是ArcGIS Runtime SDK的核心组件,也是所有GIS应用开发中的入口和基础。在ArcGIS Runtime SDK for Android中,地图组件的类名是MapView,它是Android中ViewGroup的子类,它与很多ArcGIS API中的Map、MapControl类作用是一样的。

MapView提供了完善的地图显示与控制功能:
  • Ÿ MapView具有呈现数据的能力,它可以添加一个或多个图层,所有图层只有添加到MapView容器中才能进行显示;
  • Ÿ MapView可以设置地图的显示范围和比例尺、旋转角度、地图背景、地图的最大/最小分辨率,以及指定当前显示的分辨率/比例尺;
  • Ÿ MapView提供了丰富的手势监听接口,通过这些监听可以实现各种手势动作,如点击、双击、移动或长按等操作。

特殊说明:MapView默认空间参考及空间范围为所添加的第一个图层的相关信息。


2.2、地图组件MapView的使用
有两种方式可以将MapView添加到应用当中:一个是XML方式,另一个是硬编码方式;一般多采用XML方式,方便调整布局及其属性相关设置。
2.2.1、XML方式添加MapView及初始化底图
<!-- MapView with MapOptions settings for Topo basemap,zoom level, and centered in Costa Mesa, CA. -->
<com.esri.android.map.MapView
android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
mapoptions.MapType="topo"
mapoptions.ZoomLevel="13"
mapoptions.center="33.666354, -117.903557"/>

MapOptions是用来初始化地图的一些属性的,包括预定义底图类型(MapType)、放大的级别和地图的中心点,它在10.2版本的API中第一次引入。MapOptions的MapType是一个枚举型变量,有GRAY、HYBRID、NATIONAL_GEOGRAPHIC、OCEANS、OSM、SATALLITE、STREETS、TOPO这8个值,分别代表不同风格的底图,这样Android开发者们就不用每次都通过定义ArcGISTiledMapServiceLayer和底图的url来加载底图,也不用每次在初始化的时候费劲的定义底图的放大级别和地图中心点,而是仅用MapOptions的三个属性就可以完成初始化,代码更省,效率更高。

2.2.2、XML方式添加MapView及初始化底图
同样的,MapOptions也可以通过xml和java两种代码的方式使用。上面示例中就是使用xml方式使用MapOptions,下列示例代码是使用Java硬编码的方式使用MapOptions以及将MapView控件添加到应用中。
public class MapViewActivity extends Activity {
MapView mapView;
MapOptions opt= new MapOptions(MapType.STREETS,33.666354, -117.903557,13);

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapviewcenterat);
   //利用MapOption初始化MapView
mapView = new MapView(this,opt);//也可以利用实例化ArcGISTiledMapServiceLayer添加底图图层
mapView.addLayer(        
new ArcGISTiledMapServiceLayer("http://services.arcgisonline.c ... 6quot;));
}
}

2.3、地图的方法
地图组件MapView是所有空间数据的容器,同时也是控制操作地图的对象,可以在MapView中实现对地图的放大、缩小、平移、单击、长按、以及一些状态的变化时的操作,例如当地图的范围变化时、地图的加载状态改变时等等。下面针对API中关于MapView的公有方法做一个详细说明。

以上内容翻译若有错误,欢迎大家留言批评指出!

文章来源:http://www.cnblogs.com/gis-luq/p/4941715.html

1 个评论

我是初学者,步骤比较概括我实际操作时真的看不懂

要回复文章请先登录注册