zoukankan      html  css  js  c++  java
  • ArcGIS Runtime for Android开发教程V2.0(8)基础篇地图事件

    目录

    1. MapOnTouchListener
    2. OnLongPressListener
    3. OnPanListener
    4. OnPinchListener
    5. OnSingleTapListener
    6. OnStatusChangedListener
    7. OnZoomListener

     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进行咨询。

    原文链接:http://blog.csdn.net/arcgis_mobile/article/details/8263283

  • 相关阅读:
    HDU4474 Yet Another Multiple Problem BFS搜索
    HDU4473 Exam 数学分析
    2013ACM多校联合(4)
    POJ1273 网络流...
    HDU4472 Count 递推
    POJ1149 PIGS 网络流
    UVA10881 Piotr's Ants 想法题
    javascript js string.Format()收集
    修改 设置 vs.net 网站 调试 设为 起始页
    【转】HTML5杂谈 概念与现行游戏 割绳子 宝石迷阵
  • 原文地址:https://www.cnblogs.com/dwf07223/p/3085900.html
Copyright © 2011-2022 走看看