我想通过按下按钮并向其发送所需的参数来触发地图上的onMapClick()操作。只要触摸地图,就会运行以下命令:

    @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()代码提取到一个可以从两者中调用的单独方法中更好?

最佳答案

如果不查看活动/片段的完整代码,就很难猜测原因。

也许您将地图侦听器设置为匿名类。
如果是这样,请改为:

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


您应该使自己的活动实现GoogleMap.OnMapClickListener并像这样设置侦听器

mMap.setOnMapClickListener(this);


然后您可以从任何地方致电OnMapClick

07-27 22:13