在Android Google Maps上检测拖动

曼努埃尔·卡斯特罗(Manuel Castro)

我正在使用Google Maps API开发应用程序。我有一个布尔值,告诉我是否跟随用户移动。我想在用户拖动地图时将其设置为false。但是我该怎么做呢?那是我的代码

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/checkpoint"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:id="@+id/map"/>

在Java类中,我称之为

    mapFragment = new MapFragment();
    getFragmentManager().beginTransaction().add(R.id.map, mapFragment).commit();
    getFragmentManager().executePendingTransactions();
帕维尔·杜德卡(Pavel Dudka)

您可以创建自定义的根布局,该布局可以监视触摸事件以映射片段并使用它代替默认值FrameLayout

public class CustomFrameLayout extends FrameLayout {

    private GestureDetector gestureDetector;
    private IDragCallback dragListener;

    public CustomFrameLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        gestureDetector = new GestureDetector(context, new GestureListener());
    }

    public interface IDragCallback {
        void onDrag();
    }

    public void setOnDragListener(IDragCallback listener) {
        this.dragListener = listener;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        gestureDetector.onTouchEvent(ev);
        return false;
    }

    private class GestureListener extends GestureDetector.SimpleOnGestureListener {

        @Override
        public boolean onDown(MotionEvent e) {
            return true;
        }

        @Override
        public boolean onDoubleTap(MotionEvent e) {
            return false;
        }

        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                               float velocityY) {
            return false;
        }

        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2,
                                float distanceX, float distanceY) {
            //that's when user starts dragging
            if(dragListener != null) {
                dragListener.onDrag();
            }
            return false;
        }
    }
}

========= your_activity_layout.xml:

<com.your.package.CustomFrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/checkpoint"
    android:id="@+id/map"/>

========= YourActivity.java

CustomFrameLayout mapRoot = (CustomFrameLayout) findViewById(R.id.map);
mapRoot.setOnDragListener(this);

.......
@Override
public void onDrag() {
    //reset your flag here
}

旁注:您知道您输入的android:name="com.google.android.gms.maps.SupportMapFragment"属性FrameLayout没有用..对吗?您通常android:name<fragment>xml元素指定属性不是布局。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Google Maps Android撤消标记拖动

来自分类Dev

拖动折线onMarkerDrag Android Google Maps v2

来自分类Dev

拖动折线onMarkerDrag Android Google Maps v2

来自分类Dev

在Xamarin Android上使用Google Maps

来自分类Dev

在Google Maps API Android上绘画

来自分类Dev

Windows上使用Google Maps的Android Studio

来自分类Dev

在Xamarin Android上使用Google Maps

来自分类Dev

在Android上使用Google Maps Direction Service

来自分类Dev

Android Google Maps LocationClient

来自分类Dev

Android Google Maps图标

来自分类Dev

Android-Google Maps

来自分类Dev

Google Cloud Vision对象检测模型在Android上崩溃

来自分类Dev

在Google Maps v2 Android上添加标记

来自分类Dev

Google Maps不在Android v2.2上显示

来自分类Dev

Google Maps ApiV2在Android 2.3.7上持续崩溃

来自分类Dev

屏幕上是否显示了位置-Google Maps on Android

来自分类Dev

在Google Maps Android上放置点击监听器

来自分类Dev

如何在Android中的Google Maps上显示InfoWindow for Circle

来自分类Dev

在Google Maps Android API V2上叠加图片

来自分类Dev

在Google Maps片段android上显示透明的布局

来自分类Dev

屏幕上是否显示了位置-Google Maps on Android

来自分类Dev

解析查询GeoPoint到Google Maps Android Studio上的标记

来自分类Dev

Android Google Maps按钮样式

来自分类Dev

Android Google Maps经/纬度

来自分类Dev

Android Google Maps:getLastLocation与requestLocationUpdates

来自分类Dev

Android Google Maps移动相机

来自分类Dev

Android Google Maps SnapshotReadyCallback错误

来自分类Dev

Google Maps for Android签名过程

来自分类Dev

Android Google Maps按钮样式