原文地址:

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的更多相关文章

  1. ArcGIS Runtime for Android开发教程V2.0(3)基础篇---Hello World Map

    原文地址: ArcGIS Runtime for Android开发教程V2.0(3)基础篇---Hello World Map - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NE ...

  2. ArcGIS Runtime for Android开发教程V2.0(2)开发环境配置

    原文地址: ArcGIS Runtime for Android开发教程V2.0(2)开发环境配置 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.c ...

  3. ArcGIS Runtime for Android开发教程V2.0(1)基本概念

    原文地址: ArcGIS Runtime for Android开发教程V2.0(1)基本概念 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csd ...

  4. ArcGIS Runtime for Android开发教程V2.0(8)基础篇-----地图事件

    转自:http://blog.csdn.net/arcgis_mobile/article/details/8263283 ArcGIS Runtime sdk for Android为我们提供了丰富 ...

  5. 【10.2.3】ArcGIS Runtime for Android搭建开发环境过程中问题具体解释

    一.Visual Studio Ultimate2012安装过程问题 1.问题描写叙述 安装完毕后,您将看到一条消息,指示安装程序已完毕.但并非全部的功能具有已正确安装.以及下面警告消息: Micro ...

  6. ArcGIS Runtime for Android 使用异步GP服务绘制等值线

    关于基于Android上ArcGIS Server GP服务的调用,已经有前辈给出了很好的例子: http://blog.csdn.net/esrichinacd/article/details/92 ...

  7. 《ArcGIS Engine+C#实例开发教程》第三讲 MapControl与PageLayoutControl同步

    原文:<ArcGIS Engine+C#实例开发教程>第三讲 MapControl与PageLayoutControl同步 摘要:在ArcMap中,能够很方面地进行MapView和Layo ...

  8. (转)ArcGIS Runtime for Android 使用异步GP服务绘制等值线

    关于基于Android上ArcGIS Server GP服务的调用,已经有前辈给出了很好的例子: http://blog.csdn.net/esrichinacd/article/details/92 ...

  9. Android开发教程大全介绍

    Android是由谷歌在2007年推出的一个开放系统平台,主要针对移动设备市场,目前版本为Android 4.0.Android基于Linux,开发者可以使用Java或C/C++开发Android应用 ...

随机推荐

  1. C#中调用unmanaged DLL

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  2. lex&yacc

    LEX: yytext 数组包含匹配模式的文本; 使词法分析程序工作的两条规则是:1. lex 模式只匹配输入字符或字符串一次.2. lex 执行当前输入的最长可能匹配的动作. 由 lex 产生的词法 ...

  3. DEDECMS中,获取面包屑导航

    获取面包屑导航 {dede:field name='position'/} {dede:field.position/}

  4. 利用mysqld_multi启动管理多实例

    利用mysqld_multi启动管理多实例 官方管理多实例的一个脚本peer #将之前的目录清空 [root@mysql01 mysql]# tree /data/mysql/ /data/mysql ...

  5. 玄机网C#论坛测试小游戏

    http://files.cnblogs.com/ro4ters/EasyGame.zip http://www.xuanjics.com/thread-39-1-1.html 具体活动地址

  6. C#源码大汇总

    C#高仿QQ2013可在广域网部署聊天系统GG叽叽 动态显示硬盘分区容量饼图 自定义ProgressBar控件高仿Win8进度条 多皮肤精美在线QQ悬浮客服插件 jQuery仿天猫首页多格焦点图片轮播 ...

  7. Java 多线程 锁 存款 取款

    http://jameswxx.iteye.com/blog/806968 最近想将java基础的一些东西都整理整理,写下来,这是对知识的总结,也是一种乐趣.已经拟好了提纲,大概分为这几个主题: ja ...

  8. Android开发技巧:像QQ一样输入表情图像

     EditText和TextView一样,也可以进行图文混排.所不同的是,TextView只用于显示图文混排效果,而EditText不仅可显示, 也可混合输入文字和图像,让我们先回顾一下图5.2所示的 ...

  9. angularJs--$on、$emit和$broadcast的使用

    $emit只能向parent controller传递event与data $broadcast只能向child controller传递event与data $on用于接收event与data 例子 ...

  10. linux 输入子系统(1)----系统概述

    输入设备的工作中,只是中断.读键值/坐标值是设备相关的,而输入事件的缓冲区管理以及字符设备驱动的file_operations接口则对输入设备是通用的,基于此,内核设计了input输入子系统,由核心层 ...