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

本文介绍了ArcGIS Runtime SDK for Android中核心组件MapView的概述和使用方法,包括XML方式添加并初始化底图,以及地图的各种操作。MapView作为空间数据的容器,提供地图显示、控制和手势监听等功能。
摘要由CSDN通过智能技术生成

1、前言

在上一篇内容里介绍了 关于ArcGIS Android开发的未来(“Quartz”版Beta)相关内容,期间也提到了关于API接口的重构,开发思路的调整,根据2015UC资料也可以知道新版预计将在明年的时候推出。届时在开发思路上将会往新版迁移。

总的来说,虽然“Quartz”版的开发思路有所变化,但总体变化不大,这里我将继续以现有正式发布版本为主梳理ArcGIS Runtime SDK for Android 开发内容。

参考API版本号:version 10.2.7。后续内容若不做特殊说明,均为此版本。

转载请注明出处: http://www.cnblogs.com/gis-luq/p/4941715.html

 

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.com/ArcGIS/rest/services/World_Street_Map/MapServer"));
  }
}
复制代码

2.3、地图的方法

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

MapView中的公有方法
int addLayer(Layer layer, int index)
添加图层在给定的索引。
int addLayer(Layer layer)
添加一个图层
void addLayers(Layer[] layerArray)
添加图层列表
void centerAndZoom(double lat, double lon, float levelOrFactor)
MapView初始化时,缩放到给定的纬度和经度及显示级别。
void centerAt(double lat, double lon, boolean animated)
MapView初始化时,缩放到指定经度纬度,animated表示是否显示动画效果。
void centerAt(Point centerPt, boolean animated)
MapView初始化时,缩放到指定Point,animated表示是否显示动画效果。
Bitmap createSymbolImage(Symbol symbol, Geometry geometry, int width, int height, int color)
这个方法在API  级别10.2.2 被弃用。请使用getLegendImage(Symbol, Geometry, int, int, int) 替代。
Bitmap[] createSymbolImages(Symbol[] symbol, Geometry[] geometry, int width, int height, int color)
这个方法在API  级别10.2.2 被弃用。请使用 getLegendImages(Symbol[], Geometry[], int, int, int) 替代。
void enableWrapAround(boolean enable)
启用或禁用旋转地图功能。
ViewGroup.LayoutParams
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值