ArcGIS Runtime for&nbs…

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

ArcGIS Runtime sdk for Android为我们提供了丰富的事件监听器,本节将主要介绍我们经常使用的监听器,并且介绍通过这些监听器可以实现哪些功能,在下面的监听器中只有MapOnTouchListener是类,其他皆为接口类型,如图所示:

  1.1 MapOnTouchListener

        MapOnTouchListener是MapView最为重要的监听器之一,它实现了OnTouchListener和MapGestureDetector.OnGestureListener接口,对于地图的所有操作MapOnTouchListener都可以进行相应,使用非常方便,在使用前我们只需扩展这个类并重写该类中的方法即可。用法如下

[java]  view plain copy
  1. myListener new MyTouchListener(thismapView);  
  2.         mapView.setOnTouchListener(myListener);  
  3.           
  4.     class MyTouchListener extends MapOnTouchListener  
  5.           
  6.         public MyTouchListener(Context context, MapView view)  
  7.             super(context, view);  
  8.          
  9.         public void setType(String geometryType)  
  10.             this.type geometryType;  
  11.          
  12.         public String getType()  
  13.             return this.type;  
  14.          
  15.         public boolean onSingleTap(MotionEvent e)  
  16.             return true;  
  17.                 
  18.         public boolean onDragPointerMove(MotionEvent from, MotionEvent to)          
  19.             return super.onDragPointerMove(from, to);  
  20.          
  21.         @Override  
  22.         public boolean onDragPointerUp(MotionEvent from, MotionEvent to)  
  23.             return super.onDragPointerUp(from, to);  
  24.          
  25.      


         通过上面代码的方式我们就可以监听到不同的手势操作,对于不同的手势操作将执行不通过方法,通过这些方法我们可以添加我们所需的操作功能。如,当我们在地图上点击时弹出一个窗体,我们只需在onSingleTap()方法中完成点的获取、窗体的创建及其弹出操作即可。

    

1.2 OnLongPressListener

        OnLongPressListener接口主要用于监听在地图上的长按事件,用法如下:

[java]  view plain copy
  1. //为地图添加一个长按监听器  
  2. mapView.setOnLongClickListener(new View.OnLongClickListener()  
  3.             //长按后自动执行的方法  
  4.             public boolean onLongClick(View v)  
  5.                 // TODO Auto-generated method stub  
  6.                 return false 
  7.              
  8.         });  


 

1.3 OnPanListener

        OnPanListener接口是用于当我们在MapView上平移地图操作时的事件监听,用法如下:

[java]  view plain copy
  1. //为地图添加一个平移监听器  
  2. mapView.setOnPanListener(new OnPanListener()            
  3.         public void prePointerUp(float fromx, float fromy, float tox, float toy)  
  4.                         
  5.         public void prePointerMove(float fromx, float fromy, float tox, float toy)             
  6.               
  7.         public void postPointerUp(float fromx, float fromy, float tox, float toy)          
  8.               
  9. public void postPointerMove(float fromx, float fromy, float tox, float toy)                 
  10.              
  11.         });  


 

1.4   OnPinchListener

        OnPinchListener接口也是我们经常用到,它是对地图进行两指或多指进行操作时用到的事件监听,比如我们可以通过该接口实现两指夹/捏进行地图地图缩放。用法如下:

[java]  view plain copy
  1. //为地图添加夹/捏监听器  
  2. mapView.setOnPinchListener(new OnPinchListener()            
  3.             public void prePointersUp(float x1, float y1, float x2, float y2,  
  4.                     double factor)                  
  5.                         
  6.             public void prePointersMove(float x1, float y1, float x2, float y2,  
  7.                     double factor)                  
  8.                         
  9.             public void prePointersDown(float x1, float y1, float x2, float y2,  
  10.                     double factor)                  
  11.                         
  12.             public void postPointersUp(float x1, float y1, float x2, float y2,  
  13.                     double factor)                  
  14.                         
  15.             public void postPointersMove(float x1, float y1, float x2, float y2,  
  16.                     double factor)                  
  17.                         
  18.             public void postPointersDown(float x1, float y1, float x2, float y2,  
  19.                     double factor)                  
  20.              
  21.         });  


 

1.5   OnSingleTapListener

       OnSingleTapListener接口是我们对地图进行点击操作时的事件监听器,用法如下:

[java]  view plain copy
  1. //为地图添加单击事件监听  
  2. mapView.setOnSingleTapListener(new OnSingleTapListener()  
  3.             //点击地图后自动执行的方法  
  4.             public void onSingleTap(float x, float y)  
  5.                 // TODO Auto-generated method stub  
  6.                   
  7.              
  8.         });  


 

1.6    OnStatusChangedListener

      OnStatusChangedListener接口用于监听MapView或Layer状态变化的监听器,用法如下:

[java]  view plain copy
  1. //添加状态监听器  
  2. mapView.setOnStatusChangedListener(new OnStatusChangedListener()    
  3.             public void onStatusChanged(Object source, STATUS status)  
  4.                 if(status == STATUS.INITIALIZED){                     
  5.                 }else if(status == STATUS.LAYER_LOADED){                      
  6.                 }else if((status == STATUS.INITIALIZATION_FAILED)){               
  7.                 }else if((status == STATUS.LAYER_LOADING_FAILED)){                
  8.                                 
  9.              
  10.         });  


 

        从上面的代码我们可以清晰看到,对于MapView的状态变化主要有四种:

1)      STATUS.INITIALIZED初始化成功

2)      STATUS.LAYER_LOADED图层加载成功

3)      STATUS.INITIALIZATION_FAILED初始化失败

4)      STATUS.LAYER_LOADING_FAILED图层加载失败

 

1.7    OnZoomListener

       OnZoomListener接口主要监听地图的缩放事件,用法如下:

[java]  view plain copy
  1. mapView.setOnZoomListener(new OnZoomListener()  
  2.         //缩放之前自动调用的方法  
  3.         public void preAction(float pivotX, float pivotY, double factor)  
  4.             
  5.             //缩放之后自动调用的方法         
  6.         public void postAction(float pivotX, float pivotY, double factor)  
  7.          
  8.     });  


 

 

         到此,地图上的所有监听器都已经介绍完了,如有不明,可以加入ArcGIS 4 Android 群:167467748或250106494进行咨询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值