【问题标题】:How to programmatically deselect a marker in Google Maps on Android如何以编程方式在 Android 上的 Google 地图中取消选择标记
【发布时间】:2018-04-13 15:46:35
【问题描述】:

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

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

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

【问题讨论】:

  • 您希望“隐藏这些小部件”还是完全不显示它们?
  • 隐藏。比方说,来自onBackPressed() 方法。
  • “我想从代码中“取消选择”这个标记” :: 是否有您希望“取消选择”的特定事件或仅在 2 秒之后 - 比如说 - 2 秒?
  • 任意事件。
  • 我想隐藏信息窗口和地图工具栏,但保留标记本身。

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


【解决方案1】:

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

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

方法 clear() 将从地图中删除标记​​p>

【讨论】:

  • 我不想删除任何标记。它们在地图上是静态的,用户可能希望单击它们以查看一些详细信息。我想手动删除这个选择。
  • 所以让我理解。您会避免让用户看到有关标记选择的信息,对吧?
  • 我希望用户看到这些小部件,但我想控制它们。具体来说,当用户单击后退按钮时,我需要隐藏它们。
【解决方案2】:

如果您希望基于(在此示例中)对标记的点击从地图视图中删除地图工具栏和 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 (即不应发生默认行为);否则为假(即, 默认行为应该发生)。默认行为是针对 相机移动到标记并出现一个信息窗口。

【讨论】:

    猜你喜欢
    • 2015-06-04
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2023-03-18
    相关资源
    最近更新 更多