java - 从另一个按钮操作调用 onMapClick() 操作

标签 java android android-studio google-maps-android-api-2

我想通过按下按钮并向其发送所需的参数来触发 map 上的 onMapClick() 操作。每当触摸 map 时都会运行以下命令:

    @Override
    public void onMapClick(LatLng point) {

        // animate camera to centre on touched position
        mMap.animateCamera(CameraUpdateFactory.newLatLng(point));

        // Adding new latlng point to the array list
        markerPoints.add(point);

        // Creating MarkerOptions object
        MarkerOptions marker = new MarkerOptions();

        // Sets the location for the marker to the touched point
        marker.position(point);

    }

我希望此按钮复制与触摸屏幕相同的操作,除非我手动传递一个值:

    mButtonCompleteLoop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            onMapClick(markerPoints.get(0));

        }
    });

出现错误,指出无法解析 onMapClick()。有某种方法可以做到这一点吗?或者最好将 onMapClick() 代码提取到一个单独的方法中,然后可以从两者中调用?

最佳答案

如果不查看 Activity/fragment 的整个代码,很难猜测原因

也许您将 map 监听器设置为匿名类。
如果是这样,则改为:

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
    @Override
    public void onMapClick(LatLng latLng) {
        //this 
    }
});

您应该让您的 Activity 实现 GoogleMap.OnMapClickListener 并像这样设置监听器

mMap.setOnMapClickListener(this);

然后你可以从任何地方调用OnMapClick

关于java - 从另一个按钮操作调用 onMapClick() 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32032937/

相关文章:

android - 为所有屏幕尺寸设置背景图像

java - 让我的 GUI 从类创建实例并将该信息拉入文本区域

Java MySQL : Insert special charactar into database

java - 向 MySQL 数据库中插入数据

android - AdView 导致内存泄漏

android - 如何动态更改启动 Activity ?

android - 浏览器回调和 Android Activity 堆栈疯狂

带有 gradle build classes.jar 的 Android Studio 是空的

android - 在自己创建的应用程序而不是浏览器中启动链接

java - 在 WebView 上选择文件上传时未获取文件路径