当我在OnMarkerClickListener中返回true时,如何激活地图工具栏?

android google-maps events google-maps-markers

249 观看

2回复

2861 作者的声誉

返回true到onMarkerClick可以使用该事件,但是我们丢失了infoWindow显示,地图工具栏和相机位置。

然后,我知道是否要:

  1. 使用以下方法定位相机: mMap.moveCamera()
  2. 显示infoWindows的使用方法: mMarker.showInfoWindow();
  3. 如果我尝试显示地图工具栏,则使用:mMap.getUiSettings().setMapToolbarEnabled(true);

但是显然使用点3的句子不足以显示地图工具栏。那么我可以在代码中添加什么呢?知道在onMarkerClick中,我将返回true,而当我返回false时,默认情况下将提供所有三个功能。

public boolean onMarkerClick(Marker marker) {
        mMap.animateCamera(
                CameraUpdateFactory.newLatLngZoom(ROOTS, 16),  //update
                2000, //durationMs
                new GoogleMap.CancelableCallback() {
                    @Override
                    public void onFinish() {
                        markerRoots.showInfoWindow();
                        mMap.getUiSettings().setMapToolbarEnabled(true); //NOT SUFFICIENT
                    }
                    @Override
                    public void onCancel() {
                    }
                }
        );
        return true;
    }

如果有不明白的地方,请告诉我。

问候

作者: CORONEL Braian 的来源 发布者: 2017 年 9 月 15 日

回应 2


0

336 作者的声誉

无法以编程方式使地图工具栏可见。

这可能是一种解决方法,手动创建地图工具栏并创建意图以启动Google地图。

看到这个答案

作者: Atul Vasudev A 发布者: 2017 年 9 月 15 日

0

2861 作者的声誉

临时解决方案

我的目的是:

  • 到标记的第一次单击以执行动画
  • 然后动画会自动显示infoWindow和地图工具栏。

但是由于无法自动完成,因此取决于缩放和至少两次单击标记的原因是代码。

然后,在动画之前,相机变焦将具有一个值。因此,mMap.getCameraPosition().zoom;如果能够使用事件(返回true)或执行默认行为(返回false)(即显示infoWindow和地图的工具栏),我通常会根据缩放进行评估。


执行和交互流程:

  1. 单击标记。
  2. 执行动画(zoom = 16.0)。
  3. 单击标记。
  4. 如果是zoom==16.0这样,我显示imageViews。
  5. 然后,通过与地图交互来修改缩放。
  6. 项目1。

    public boolean onMarkerClick(final Marker marker) {
    
        //Activate the default behavior after the animation and when clicking
        float zoom = mMap.getCameraPosition().zoom;
        if (zoom == 16.0) {
            mMap.getUiSettings().setMapToolbarEnabled(true);
            return false;
        }
    
        mMap.animateCamera(
                CameraUpdateFactory.newLatLngZoom(ROOTS, 16),  //update
                2000, //durationMs
                new GoogleMap.CancelableCallback() {   
                    @Override
                    public void onFinish() {
                        //Disable the toolbar after the animation                            
                        mMap.getUiSettings().setMapToolbarEnabled(false);
                    }
                    @Override
                    public void onCancel() {
                    }
                }
        );
        return true;
    }
    

事件的答案取决于缩放,默认情况下是应用行为,还是自定义行为。

作者: CORONEL Braian 发布者: 2017 年 9 月 17 日
32x32