如何在谷歌地图中禁用两指滚动

2024-01-07

我正在尝试在我的应用程序中实现谷歌地图,其中我想在谷歌地图中禁用两根手指滚动。这意味着如果用户用一根手指触摸地图,则地图应该滚动,如果用户用两根手指触摸地图,则不应滚动。 谢谢!


您可以在 GoogleMap 上启用/禁用滚动手势,您可以通过调用setAllGesturesEnabled() and setScrollGesturesEnabled() on GoogleMap.getUiSettings()物体并用于确定两个手指的触摸MapFragment您可以使用基于自定义地图片段的方法this https://stackoverflow.com/a/14538765/6950238社区维基的回答:

public class TouchableWrapper extends FrameLayout {

    private GoogleMap mGoogleMap = null;

    public TouchableWrapper(Context context) {
        super(context);
    }

    public void setGoogleMap(GoogleMap googleMap) {
        mGoogleMap = googleMap;
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {

        switch (event.getAction() & MotionEvent.ACTION_MASK) {

            case MotionEvent.ACTION_DOWN:
                mGoogleMap.getUiSettings().setScrollGesturesEnabled(true);
            break;

            case MotionEvent.ACTION_POINTER_DOWN:
                // disabling scroll gestures in case second finger down
                mGoogleMap.getUiSettings().setScrollGesturesEnabled(false);
            break;

            case MotionEvent.ACTION_POINTER_UP:
                mGoogleMap.getUiSettings().setScrollGesturesEnabled(true);
            break;

            case MotionEvent.ACTION_UP:
                mGoogleMap.getUiSettings().setScrollGesturesEnabled(true);
            break;
        }

        return super.dispatchTouchEvent(event);
    }
}

MapFragment为此应该定制如下:

public class MultiTouchMapFragment extends MapFragment {
    public View mOriginalContentView;
    public TouchableWrapper mTouchView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
        mOriginalContentView = super.onCreateView(inflater, parent, savedInstanceState);
        mTouchView = new TouchableWrapper(getActivity());
        mTouchView.addView(mOriginalContentView);
        return mTouchView;
    }

    @Override
    public View getView() {
        return mOriginalContentView;
    }
}

activity_main.xml for MainActivity可以是这样的:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="{YOUR_PACKAGE_NAME}.MainActivity">

    <fragment
        android:id="@+id/map_fragment"
        android:name="{YOUR_PACKAGE_NAME}.MultiTouchMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

并且没有任何变化MainActivity:

public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {

    private GoogleMap mGoogleMap;
    private MultiTouchMapFragment mMapFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mMapFragment = (MultiTouchMapFragment) getFragmentManager()
                .findFragmentById(R.id.map_fragment);
        mMapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mGoogleMap = googleMap;
        mMapFragment.mTouchView.setGoogleMap(mGoogleMap);
    }

}

此外,您可以使用相同的解决方案进行定制MapView(如果你使用它)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在谷歌地图中禁用两指滚动 的相关文章

  • android - EditText 打字速度很慢

    我的 EditText 在打字时响应速度很慢 这种滞后现象足以让我找到解决方案 我做了一些研究 发现了一个 SO 线程输入文本时 EditText 滞后 https stackoverflow com questions 6173591 a
  • 使用javascript在谷歌地图中绘制多边形

    我想在谷歌地图中绘制多边形 我正在使用示例代码http jsfiddle net rvsMH 1 http jsfiddle net rvsMH 1 但它不起作用并且没有获取数组或纬度 经度值 我不知道出了什么问题
  • 更改工具栏中汉堡图标的大小?

    我有两个问题 可能很奇怪 但无论如何 我有带有应用程序标题的工具栏 如何将其更改为非徽标的图片 下一个问题 是否可以设置 更改工具栏中汉堡图标的大小 我在下面的下一个代码的帮助下制作了经典的导航抽屉 我也使用了 ActionBarDrawe
  • Google Inbox 类似 RecyclerView 项目打开动画

    目前 我正在尝试实现 Google Inbox 例如RecyclerView行为 我对电子邮件打开动画很好奇 我的问题是 该怎么做 我的意思是 他们使用了哪种方法 他们用过吗ItemAnimator dispatchChangeStarti
  • OpenCV InRange 参数

    我在 Android 上使用 OpenCV 来实时查找特定颜色的圆圈 我的第一步是仅保留与我正在寻找的定义颜色相对应的像素 在本例中为红色或绿色 示例图像 https i stack imgur com CIozU jpg 为此 我正在使用
  • layout.xml 的用途是什么?

    人们为什么使用layout xml在他们的resources like
  • 下载图像并显示它

    应用程序的主要目的是下载和显示图像 但是当我尝试启动应用程序时它崩溃了 这是我的代码 private DownloadImageTask task protected void onCreate Bundle savedInstanceSt
  • Android 手机应用意图

    我想在手机上启动手机应用程序作为意图 我正在使用这个代码 startActivity getPackageManager getLaunchIntentForPackage com android phone 但该函数抛出一个空指针异常 因
  • 如何将单选按钮状态保存到已保存/共享首选项?

    我可以在保存的首选项中保存字符串 但很难保存单选按钮 public class PersonalDetailsf extends Activity private SharedPreferences sharedPreferences pr
  • Android 在启动时启动服务,如何在设备重启后重新启动服务类?

    我需要在启动时启动一项服务 我搜索了很多 他们正在谈论广播接收器 由于我是 Android 开发新手 所以我对 Android 上的服务并没有清楚的了解 请提供一些源代码 您的接收者 public class MyReceiver exte
  • 带有方向的谷歌静态地图

    我的项目列表中有带有迷你地图的生成地点 地图上应该有 2 个点以及这两点之间的彩色道路方向 它应该看起来像这样 这应该是静态图片 因为页面上会有很多这样的不同方向的图片 但正如我所见 谷歌静态地图不允许绘制这样的图像 两点之间只能有直线 如
  • 手动启用时 Firebase Crashlytics 不报告崩溃

    Crashlytics 在没有选择加入报告的情况下也能正常工作 但一旦我根据规定设置了选择加入报告 它就会停止报告任何内容tutorial https firebase google com docs crashlytics customi
  • 模拟器:进程已完成,退出代码为 134(被信号 6:SIGABRT 中断)

    我最近刚刚开始在 Mac 上下载 Android Studio 版本 3 0 1 但收到以下错误 模拟器 进程已完成 退出代码为 134 被信号 6 SIGABRT 中断 我按照 Android Studio 教程操作并能够运行模拟器 但在
  • 更改android中禁用按钮的颜色

    有没有办法通过样式或其他形式更改 android 中禁用按钮的颜色 我目前有以下内容 可绘制 button default xml
  • 点击监听器的公共类

    我的所有 6 项活动中有 7 个按钮 所有 6 个按钮在所有活动中都具有相同的功能 如何为这 6 个按钮执行通用的单击事件侦听器 您可以创建一个实现 View OnClickListener 的新类 如下所示 public class My
  • 如何在 WebView 中添加 JavaScript 函数并稍后在提交 reCAPTCHA 时从 HTML 调用它

    我在 WebView 中添加一个 JavaScript 函数 如下所示 Kotlin val webView findViewById R id webview as WebView webView getSettings setJavaS
  • 按名称查找视图

    是否可以通过名称而不是 id 来查找视图 findViewById R id someView 但我想做这样的事情 findViewByName someView 在处理 xml 时 您必须通过标识符查找视图 但是您可以使用以下方式查找标识
  • 如何使 tablayout 文本大小相等?

    这就是我所做的 我为文本创建了一种样式
  • Jetpack Compose 部分或开放侧边框

    我正在尝试绘制部分或一侧开放的矩形圆形边框以实现此效果 玩了一下之后我得到了这个 这是通过以下方式完成的 RoundedCornerShape topStartPercent 50 bottomStartPercent 50 start R
  • OpenGL ES 2.0 屏幕闪烁

    我面临着一个大问题 我正在使用带有 Android 4 0 3 的 Transformer tf101 选项卡 我的应用程序使用自定义 OpenGL ES 2 0 表面 我正在用纹理渲染多个平面 该纹理大约发生变化 每秒 20 次 并通过传

随机推荐

  • 嵌套 Case 语句类型错误 (postgres)

    我创建的一些 postgres 代码给了我一个错误 ERROR CASE types character varying and numeric cannot be matched CODE CREATE TABLE current con
  • 尝试理解 gcc 在复制返回地址的 main 顶部的复杂堆栈对齐

    嗨 我已经反汇编了一些我编写的程序 linux 以更好地理解它是如何工作的 我注意到 main 函数总是以 lea ecx esp 0x4 I assume this is for getting the adress of the fir
  • 使用自定义框架时出现“Interface Builder 文件中的未知类 BarChartView”错误

    我正在尝试使用Charts framework在我的应用程序中 我已经使用 Carthage 为此构建了二进制文件 并将其添加到我的应用程序中 并包含两个文件 Charts Swift h Charts h 然后我将视图的自定义类设置为Ba
  • 如何在 Egit/TortoiseGit 中查看存储库的整个提交历史记录?

    我正在寻找一种方法来查看当前 git 存储库的整个历史 从表面上看 egit 的 Show in History 只会显示当前提交之前的提交 我的意思是 如果我执行 commit1 和 commit2 然后决定签出第一个 则运行项目的 在历
  • 关于UpdatePanel内部?

    假设我在页面上有很多重度控制 例如 我在页面上填充了三个网格视图 一个网格视图和按钮位于更新面板内 从这个场景我们可以理解页面上会有巨大的视图状态 所以我想知道 如果我单击更新面板内的按钮 那么所有视图状态都将在部分回发期间提交到服务器 如
  • 附加属性出现奇怪的 WPF 错误

    我看到奇怪的行为 我强烈感觉这是 net 工具链中的一个错误 重现步骤 创建 WPF 应用程序 在该解决方案中创建类库 在类库中定义一些公共类 可以为空 在 WPF 应用程序中定义一些带有附加属性的类 并将 Window 作为目标类 将其附
  • Picasso IllegalArgumentException 目标不得为 null

    我正在尝试在我的项目中使用毕加索库来设置图像 当我单击视图的图像时 我在毕加索执行中遇到错误 应用程序的Logcat java lang IllegalArgumentException Target must not be null at
  • vue 最奇怪的行为 - 注释代码正在运行

    我有一个 vue 项目 以 firestore 作为数据库 我曾经使用以下功能登录用户 loginUser if this email this password firebase auth signInWithEmailAndPasswo
  • 如何使用 Python 观察和监控新创建文件的 ftp 安装点

    我可以使用观看本地目录inotify基于内核子系统的解决方案 还有一些 python 项目也在 inotify 之上工作 例如pyinotify https github com seb m pyinotify pyInotify http
  • 对 __attribute__((format)) 的自定义支持

    GCC 和 Clang 都支持对变量参数函数进行编译时检查 例如printf 这些编译器接受如下语法 extern void dprintf int dlevel const char format attribute format pri
  • 应该 validate_format_of 。 not_with 在框架中有问题(或者在我的理解中)

    我将以下代码放入 RSpec 测试中 it should validate format of email not with test test 并设置实际的类 validates email presence gt true format
  • Python如何获取用zlib压缩的数据的长度?

    我有一个包含多个 zlib 压缩的二进制数据的文件 并且偏移量和长度未知 下面 我有一个脚本 用于获取最终 zlib 压缩数据之后的字节偏移量 这就是我所需要的 脚本有效 但是 为了获得原始 zlib 压缩数据的长度 我必须将其解压缩并重新
  • Ontotext GraphDB 如何在 Visual Graph 中分配颜色?

    我一直在尝试使用 Ontotext GraphDB 创建一些图形可视化 我希望我对相同数据制作的各种可视化效果之间的颜色保持一致 我知道颜色是根据类型而定的 但似乎并不一致 例如 如果我创建一个仅包含类型节点的可视化图表A 分配给节点的颜色
  • Jax rs 客户端池

    我正在努力使用 jax rs 2 客户端 API 设置 REST 客户端 在 api 文档中 它说 客户端是管理客户端通信基础设施的重量级对象 客户端实例的初始化和处置可能是一个相当昂贵的操作 因此建议仅构建少量客户端应用程序中的实例 ht
  • 无法加载文件或程序集 CrystalDecisions.ReportAppServer.CommLayer

    我有一个与此类似的错误one https stackoverflow com q 10001310 196526或这个one https stackoverflow com q 38025601 196526但我的问题不同 我在本地计算机上
  • 删除一个类的所有成员

    昨天我读了一位同事的一些代码 发现了这一点 class a class public a class int some method int some param int value 1 int value 2 float value 3
  • 暂时将powershell语言更改为英语?

    我编写了一些使用系统 powershell 命令输出的软件 但没有预见到对于英语以外的语言 输出会有所不同 有没有办法暂时将Powershell中的语言更改为英语就这一个 单个 powershell 会话 Notes 如果它很重要 我希望运
  • pandas - Groupby 两个函数

    我一直在尝试获取 pandas groupby 对象的 cumsum 我需要将 cumsum 移动 1 这是通过 shift 实现的 然而 在单个 groupby 对象上执行这两个函数会产生一些不需要的结果 df pd DataFrame
  • React 的 getDefaultProps() 中的 this.props ?

    我正在尝试添加一个依赖于其他道具的道具 这些道具基本上将由组件的所有者组件传递 所以我做了 propTypes user React PropTypes object comment React PropTypes object getDe
  • 如何在谷歌地图中禁用两指滚动

    我正在尝试在我的应用程序中实现谷歌地图 其中我想在谷歌地图中禁用两根手指滚动 这意味着如果用户用一根手指触摸地图 则地图应该滚动 如果用户用两根手指触摸地图 则不应滚动 谢谢 您可以在 GoogleMap 上启用 禁用滚动手势 您可以通过调