如何以编程方式取消选择Android版Google地图中的标记

时间:2018-04-13 15:46:36

标签: android google-maps google-maps-markers

当用户点击标记时,会出现信息窗口以及地图工具栏:

example

我想从代码中“取消选择”此标记,从而隐藏这些小部件。所需行为类似于用户点击地图上其他位置时的行为。

我知道marker.hideInfoWindow()方法,但它只隐藏视图,将标记保持在“选定”状态。

2 个答案:

答案 0 :(得分:0)

如果你想删除所选的标记,例如你想要显示你当前的位置,你应该这样做:

    mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {
        @Override
        public boolean onMyLocationButtonClick() {
            mMap.clear();
            getLocationData();
            return false;
        }
    });

方法clear()将从Map

中删除标记

答案 1 :(得分:0)

如果您希望从地图视图中删除地图工具栏和myLocation按钮(在此示例中)点击标记,您可以声明一个类boolean变量,您可以使用该变量切换这些变量的可见性对象。

boolean toggleMapToolBarVisibility = false;

然后,您可以使用boolean变量来显示MapToolBar和/或MyLocation按钮。我将此功能添加到OnMarkerClickListener事件中,但可以在任何地方添加此行为,例如。 onBackPressed()(但如果您确实将其添加到onMapReady方法以外的某处,请确保GoogleMap对象不是null!)。

@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
            try{
                toggleMapToolBarVisibility = !toggleMapToolBarVisibility;
                mMap.getUiSettings().setMapToolbarEnabled(toggleMapToolBarVisibility);
                mMap.setMyLocationEnabled(toggleMapToolBarVisibility);
            }
            catch (SecurityException sec){
                Log.e(TAG, sec.getMessage());
            }
            return false; // you can return true to change the behavior
        }
    });
}
  

如果onMarkerClick侦听器已使用该事件,则返回true   (即不应出现默认行为);否则为假(即   应该发生默认行为)。默认行为是   相机移动到标记和信息窗口出现。