• 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都可以进行相应,使用非常方便,在使用前我们只需扩展这个类并重写该类中的方法即可。用法如下

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


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

        

    1.2 OnLongPressListener

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

    [java] view plaincopy
     
    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 plaincopy
     
    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 plaincopy
     
    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 plaincopy
     
    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 plaincopy
     
    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 plaincopy
     
    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进行咨询。

      

  • 相关阅读:
    UI进阶--手势识别
    UI进阶--响应者链条
    UI进阶--触摸事件的产生和传递
    UI进阶--触摸事件
    UI进阶--Quartz2D和触摸事件的简单使用:手势解锁
    UI进阶--Quartz2D和触摸事件的简单使用:简易涂鸦板
    UI进阶--Quartz2D绘制图形的基本使用
    Mac 自定义"终端"快捷键
    GCD内部实现--摘自《iOS与OS X多线程和内存管理》
    Add Binary -- leetcode
  • 原文地址:https://www.cnblogs.com/cugwx/p/3781548.html
Copyright © 2020-2023  润新知