ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView
原文地址:
ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/arcgis_mobile/article/details/8147328
MapView是ArcGIS Runtime SDK forAndroid的核心组件,通过MapView可以呈现地图服务的数据,并且在MapView中定义了丰富的属性、方法和事件,用户通过MapView可以操作设备的触摸屏,默认MapView可以响应用户的各类手势的操作,在GIS的开发中,什么时候都少不了地图操作。MapView是Android中ViewGroup的子类,也是ArcGIS Runtime SDK for Android中的地图容器,与很多ArcGIS API中的Map、MapControl类作用是一样的。
1、 MapView功能介绍
MapView的强大不仅仅是因为它是呈现地图数据的容器,MapView为我们提供丰富的功能,下面来分析MapView为我们提供哪些功能。
首先,MapView具有呈现地图能力,MapView可以添加一个或多个图层,图层又分很多种,如:切片图层、动态图层、本地图层等等,图层只有添加到MapView容器中才能进行显示。
其次,通过MapView我们可以设置地图的显示范围、是否允许被旋转、地图背景、地图的最大/最小分辨率及其指定当前显示的分辨率/比例尺。
最后,我们来看一下MapView提供的丰富手势监听接口,通过这些监听器,可以监听我们各种手势动作,如:点击、双击、移动或长按等等操作。
2、 MapView添加方式
我们有两种方式可以将MapView添加到我们的应用当中:一个是XML方式,另一个是硬编码方式;我们多采用XML方式,方便调整布局及其属性的相关设置。
l XML方式:
<com.esri.android.map.MapView android:id="@+id/map" android:layout_width="fill_parent" android:layout_height="match_parent"> </com.esri.android.map.MapView>
l 硬编码方式:
MapView map = new MapView(this); map.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); tileLayer = new ArcGISTiledMapServiceLayer("http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"); map.addLayer(tileLayer); setContentView(map );
3、地图缩放、旋转和坐标转换
地图缩放,是地图中最基本的功能,我们可以是使用MapView进行地图的缩放,MapView提供了多种地图缩放的方式,如代码所示:
mMapView.zoomin(); mMapView.zoomout(); mMapView.zoomToResolution(centerPt,res); mMapView.zoomToScale(centerPt,scale);
对于上面的几种缩放方式前两种主要的功能是逐级缩放,也就是说当我们调用一次zoomin()方法地图将放大一级,调用一次zoomout()方法地图将缩小一级。
而对于后两种缩放,它们是按照不同的分辨率或比例尺进行缩放的,调用zoomToResolution(centerPt, res)方法进行缩放时,我们需要传入两个参数,第一参数centerPt为我们要按照哪个中心点进行缩放,因此我们需要传入一个Point对象才行,第二个参数为要缩放到的分辨率;对于zoomToScale(centerPt, scale)来说,和zoomToResolution(centerPt, res)很类似,两个方法第一个参数是相同的,而第二个参数不再是分辨率,是要传入地图的比例尺。
这里的分辨率或比例尺值与我们的发布的服务密切相关,发布的地图服务如果生成了缓存切片,在服务中我可以看到不同级别对应的比例尺和分辨率,如图:
服务地址:http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer
MapView还可以设置地图的显示范围、比例尺、分辨率、旋转角度和地图背景色,如:
map = (MapView)findViewById(R.id.map); …… Envelope env = new Envelope(12957628.58241, 4864247.2803126, 12958114.4225065, 4864490.20036087);//范围 map. setExtent(env)//设置地图显示范围 map. setScale(295828763);//当前显示的比例尺 map. setResolution(9783.93962049996);//设置当前显示的分辨率 //上面三个方法都可以改变地图的显示范围,在代码中是不会同时使用的 map.setMapBackground(0xffffffff, Color.TRANSPARENT, 0, 0);//设置地图背景 map.setAllowRotationByPinch(true);//是否允许使用Pinch方式旋转地图map.setRotationAngle(15.0); //初始化时将地图旋转15度,参数为正时按逆时针方向旋转。
除了上面的功能,MapView还有一主要的功能:“坐标转换”,这里所说的坐标转换是指,怎样把屏幕坐标转换成空间坐标或将空间坐标转换成屏幕坐标,如:
//给地图添加一个点击事件监听 map.setOnSingleTapListener(newOnSingleTapListener() { publicvoid onSingleTap(float x, float y) { // TODO Auto-generated method stub Point pt = map.toMapPoint(x,y);//屏幕坐标转换成空间坐标 Point screenPoint = map. toScreenPoint(pt);//转换成屏幕坐标对象 } });
4 、地图监听器
对于移动端手势的监听是一个比较重要的环节,对于地图的手势操作也是由MapView来管理的,主要有以下几种监听:
l 地图单击监听:OnSingleTapListener
l 平移监听:OnPanListener
l 长按监听:OnLongPressListener
l 缩放监听:OnZoomListener
l 状态监听:OnStatusChangedListener
l pinch监听:OnPinchListener
有了这些监听我们就可以对地图无所以为操作,对于这些监听在此不过多解释,如果想详细了解这些监听的用法可查看3.4节(地图事件)。
到此,所有关于MapView的介绍告一段落,下面进入Layer世界。
ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView的更多相关文章
- ArcGIS Runtime for Android开发教程V2.0(3)基础篇---Hello World Map
原文地址: ArcGIS Runtime for Android开发教程V2.0(3)基础篇---Hello World Map - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NE ...
- ArcGIS Runtime for Android开发教程V2.0(2)开发环境配置
原文地址: ArcGIS Runtime for Android开发教程V2.0(2)开发环境配置 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.c ...
- ArcGIS Runtime for Android开发教程V2.0(1)基本概念
原文地址: ArcGIS Runtime for Android开发教程V2.0(1)基本概念 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csd ...
- ArcGIS Runtime for Android开发教程V2.0(8)基础篇-----地图事件
转自:http://blog.csdn.net/arcgis_mobile/article/details/8263283 ArcGIS Runtime sdk for Android为我们提供了丰富 ...
- 【10.2.3】ArcGIS Runtime for Android搭建开发环境过程中问题具体解释
一.Visual Studio Ultimate2012安装过程问题 1.问题描写叙述 安装完毕后,您将看到一条消息,指示安装程序已完毕.但并非全部的功能具有已正确安装.以及下面警告消息: Micro ...
- ArcGIS Runtime for Android 使用异步GP服务绘制等值线
关于基于Android上ArcGIS Server GP服务的调用,已经有前辈给出了很好的例子: http://blog.csdn.net/esrichinacd/article/details/92 ...
- 《ArcGIS Engine+C#实例开发教程》第三讲 MapControl与PageLayoutControl同步
原文:<ArcGIS Engine+C#实例开发教程>第三讲 MapControl与PageLayoutControl同步 摘要:在ArcMap中,能够很方面地进行MapView和Layo ...
- (转)ArcGIS Runtime for Android 使用异步GP服务绘制等值线
关于基于Android上ArcGIS Server GP服务的调用,已经有前辈给出了很好的例子: http://blog.csdn.net/esrichinacd/article/details/92 ...
- Android开发教程大全介绍
Android是由谷歌在2007年推出的一个开放系统平台,主要针对移动设备市场,目前版本为Android 4.0.Android基于Linux,开发者可以使用Java或C/C++开发Android应用 ...
随机推荐
- css设置网页打印样式
有三种方法 1. 为屏幕显示和打印分别准备一个css文件,如下所示: 用于屏幕显示的css: <link rel="stylesheet" href="css/n ...
- 公交CPU卡原理
现在的公交卡已经开始逐步的采用IC卡(CPU卡?什么东东?),而且在国家交通部的推动下,开始了全国范围内的互联互通.以后,手里只用拿着一张卡,就可以走遍全国,而且如果支持在线充值的话,基本上就不用在车 ...
- 停车场管理软件附带源代码 J2EE服务端+android客户端
该源码是停车场管理软件附带源代码 J2EE服务端+android客户端,也是一套停车场管理车辆进出的管理软,喜欢的朋友可以看看吧. 应用的后台管理主要功能介绍:1 机构管理 ,机构有从属管理< ...
- 微软有完善的WP开发教程
微软的Windows Phone 开发者中心 地址:http://dev.windowsphone.com/zh-cn/develop由于这里的教程非常完善,大家直要把开发者中心的内容看完就可以了,所 ...
- HACMP 学习笔记--转载自wangjialiang-csdn博客
An41 教程: Ha: 初始阶段的规划最重要 第一部分:概念和模型 Ha 目标:掩盖和消除计划和非计划的宕机 Eliminate SPOF :消除单节点故障, single point of fai ...
- Thinkphp 缓存微信jssdk相关认证参数
public function getapiSignature() { $access_token=S('access_token'); //先查询缓存中是否存在 if($access_toke ...
- 弹性布局学习-详解 justify-content(三)
弹性布局学习-详解 justify-content(三)
- Eclipse查看源码乱码问题
在同一个工作区下,依赖的Jar包如果既有GBK编码,又有UTF-8编码,就会出现的问题. 常规解决方法 1.切换工作区编码.麻烦,效率低. 2.设置Jar包编码,只有Eclipse4.2支持,4.0以 ...
- fedora安装postgresql
1. 安装:postgresql-server pgadmin程序 sudo yum install postgresql-server.x86_64 sudo yum install pgadmin ...
- Redhat 显示系统版本号和内核版本号
1./etc/issue 和 /etc/redhat-release都是系统安装时默认的发行版本信息,通常安装好系统后文件内容不会发生变化.[root@rac1 mysql]# cat /etc/is ...