ArcGIS Runtime for Android开发教程V2.0(8)基础篇-----地图事件
转自:http://blog.csdn.net/arcgis_mobile/article/details/8263283
ArcGIS Runtime sdk for Android为我们提供了丰富的事件监听器,本节将主要介绍我们经常使用的监听器,并且介绍通过这些监听器可以实现哪些功能,在下面的监听器中只有MapOnTouchListener是类,其他皆为接口类型,如图所示:

1.1 MapOnTouchListener
MapOnTouchListener是MapView最为重要的监听器之一,它实现了OnTouchListener和MapGestureDetector.OnGestureListener接口,对于地图的所有操作MapOnTouchListener都可以进行相应,使用非常方便,在使用前我们只需扩展这个类并重写该类中的方法即可。用法如下
- myListener = new MyTouchListener(this, mapView);
- mapView.setOnTouchListener(myListener);
- /*
- * MapView's touch listener
- */
- class MyTouchListener extends MapOnTouchListener {
- public MyTouchListener(Context context, MapView view) {
- super(context, view);
- }
- public void setType(String geometryType) {
- this.type = geometryType;
- }
- public String getType() {
- return this.type;
- }
- public boolean onSingleTap(MotionEvent e) {
- return true;
- }
- public boolean onDragPointerMove(MotionEvent from, MotionEvent to) {
- return super.onDragPointerMove(from, to);
- }
- @Override
- public boolean onDragPointerUp(MotionEvent from, MotionEvent to) {
- return super.onDragPointerUp(from, to);
- }
- }
通过上面代码的方式我们就可以监听到不同的手势操作,对于不同的手势操作将执行不通过方法,通过这些方法我们可以添加我们所需的操作功能。如,当我们在地图上点击时弹出一个窗体,我们只需在onSingleTap()方法中完成点的获取、窗体的创建及其弹出操作即可。
1.2 OnLongPressListener
OnLongPressListener接口主要用于监听在地图上的长按事件,用法如下:
- //为地图添加一个长按监听器
- mapView.setOnLongClickListener(new View.OnLongClickListener() {
- //长按后自动执行的方法
- public boolean onLongClick(View v) {
- // TODO Auto-generated method stub
- return false;
- }
- });
1.3 OnPanListener
OnPanListener接口是用于当我们在MapView上平移地图操作时的事件监听,用法如下:
- //为地图添加一个平移监听器
- mapView.setOnPanListener(new OnPanListener() {
- public void prePointerUp(float fromx, float fromy, float tox, float toy) {
- }
- public void prePointerMove(float fromx, float fromy, float tox, float toy) { }
- public void postPointerUp(float fromx, float fromy, float tox, float toy) { }
- public void postPointerMove(float fromx, float fromy, float tox, float toy) {
- }
- });
1.4 OnPinchListener
OnPinchListener接口也是我们经常用到,它是对地图进行两指或多指进行操作时用到的事件监听,比如我们可以通过该接口实现两指夹/捏进行地图地图缩放。用法如下:
- //为地图添加夹/捏监听器
- mapView.setOnPinchListener(new OnPinchListener() {
- public void prePointersUp(float x1, float y1, float x2, float y2,
- double factor) {
- }
- public void prePointersMove(float x1, float y1, float x2, float y2,
- double factor) {
- }
- public void prePointersDown(float x1, float y1, float x2, float y2,
- double factor) {
- }
- public void postPointersUp(float x1, float y1, float x2, float y2,
- double factor) {
- }
- public void postPointersMove(float x1, float y1, float x2, float y2,
- double factor) {
- }
- public void postPointersDown(float x1, float y1, float x2, float y2,
- double factor) {
- }
- });
1.5 OnSingleTapListener
OnSingleTapListener接口是我们对地图进行点击操作时的事件监听器,用法如下:
- //为地图添加单击事件监听
- mapView.setOnSingleTapListener(new OnSingleTapListener() {
- //点击地图后自动执行的方法
- public void onSingleTap(float x, float y) {
- // TODO Auto-generated method stub
- }
- });
1.6 OnStatusChangedListener
OnStatusChangedListener接口用于监听MapView或Layer状态变化的监听器,用法如下:
- //添加状态监听器
- mapView.setOnStatusChangedListener(new OnStatusChangedListener() {
- public void onStatusChanged(Object source, STATUS status) {
- if(status == STATUS.INITIALIZED){
- }else if(status == STATUS.LAYER_LOADED){
- }else if((status == STATUS.INITIALIZATION_FAILED)){
- }else if((status == STATUS.LAYER_LOADING_FAILED)){
- }
- }
- });
从上面的代码我们可以清晰看到,对于MapView的状态变化主要有四种:
1) STATUS.INITIALIZED初始化成功
2) STATUS.LAYER_LOADED图层加载成功
3) STATUS.INITIALIZATION_FAILED初始化失败
4) STATUS.LAYER_LOADING_FAILED图层加载失败
1.7 OnZoomListener
OnZoomListener接口主要监听地图的缩放事件,用法如下:
- mapView.setOnZoomListener(new OnZoomListener() {
- //缩放之前自动调用的方法
- public void preAction(float pivotX, float pivotY, double factor) {
- }
- //缩放之后自动调用的方法
- public void postAction(float pivotX, float pivotY, double factor) {
- }
- });
到此,地图上的所有监听器都已经介绍完了,如有不明,可以加入ArcGIS 4 Android 群:167467748或250106494进行咨询。
ArcGIS Runtime for Android开发教程V2.0(8)基础篇-----地图事件的更多相关文章
- ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView
原文地址: ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http:/ ...
- 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 ...
- 【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应用 ...
随机推荐
- 解决在管理wordpress时权限不足的问题
我的wordpress网站的运行环境是自己手动搭建的lamp环境,在管理wordpress时经常遇到因没有足够的权限而无法执行某些操作.在linux上的权限不足的问题无外乎有两个原因,一个是wordp ...
- 如何使用ERStudio 生成comment
在ER使用中,在生成sql过程中,如何批量生成字段描述,如何批量添加Owner,请看下文: 1.ER生成字段描述 2.ER生成描述添加Owner 使用的ER版本是8.0,英文版本,在操作过程中,有些配 ...
- NOSQL之【WIN7的安装配置】
1.下载安装 大家根据各自系统配置,下载相对应的redis版本.我下载是redis 2.6 将redis.conf 复制到 bin/release/redisbin 里面 redis-server.e ...
- MongoDB入门三步曲3--部署技术:主备、副本集和数据分片
mongodb部署--主备.副本及数据分片 主备复制 副本集 数据分片 主备复制 主备复制是最基本的一种多点部署方案,在读写分离.热备份.数据恢复等方面具有重要作用. 在真实的生产环境,主备库肯定需要 ...
- 三个PHP常用代码样例
作为一个正常的程序员,会好几种语言是十分正常的,相信大部分程序员也都会编写几句PHP程序,如果是WEB程序员,PHP一定是必备的.尽管PHP经常被人诟病,被人贬低,被人当玩笑开,事实证明,PHP是全世 ...
- rm排除指定文件或指定文件夹下文件
3.方法3,当前文件夹中结合使用grep和xargs来处理文件名: ls | grep -v keep | xargs rm #删除keep文件之外的所有文件 说明: ls先得到当前的所有文件和文件夹 ...
- 使用.htaccess进行浏览器图片文件缓存
对于图片类网站,每次打开页面都要重新下载图片,慢不说,还非常浪费流量.这时就需要用到缓存,强制浏览器缓存图片文件 缓存文件,提问网站访问数度,减少流量消耗,现提供2中缓存代码 打开.htaccess文 ...
- 宅男福利--利用Python简单爬图
Ver beta..代码粗陋. 使用说明以Windows为例, Python版本为2.7.6 确认你电脑已经安装了Python, Windows默认安装路径为C:\Python27.如果没有安装,先下 ...
- Vijos P1062 迎春舞会之交谊舞
题目链接:https://vijos.org/p/1062 题意:输入n(n <= 1500)个女生左边有多少个男生.每个女生都和她左边最近的男生跳舞. 输出每个女生到可以与之跳舞的男生之间有几 ...
- 银联SDK
最近在开发一个app,需要调用银联的sdk控件,银联提供的demo可以正常运行,但是自己的程序却怎么都编译不通过,到底有哪些需要注意的呢?? 具体的有可能会出现哪些错误我就不列举了,我只是提下有哪些需 ...