侦听器映射标记外的触摸

Listener to map touch outside of the markers

我正在使用带有一些标记的 google 地图 api。我还如下所示覆盖了 infoWindow 以显示自定义文本。

public void setUpMap() {
    final GoogleMap map = mMapView.getMap();
    map.clear();
    map.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
        private View mHolder;

        @Override
        public View getInfoWindow(final Marker marker) {
            Log.d("MAP", "Map clicked on marker = " + maker);
            etc....

这很好用,我在单击时更改了每个标记的图标,使它们在视觉上被选中。但是,我想 "unselect" 所有标记。问题是我不知道如何添加从标记外部触发的侦听器。

换句话说,我的侦听器 "getInfoWindow" 只有在触摸标记时才会触发。我想要相反的。某种侦听器告诉我用户触摸了地图而不是标记。

这容易做到吗?非常感谢任何指点。

谢谢!

好的,我想这真的很简单。
你有 OnMarkerClickListener and OnMapClickListener.

因此,在您的情况下,只需注册 OnMapClickListener,然后在 onMapClick() 中,您可以做您需要的。

还有一件事 - 当你添加标记时,将它们存储在 Arraylist - 然后你可以随时做任何需要的事情 - 甚至从地图上删除所有标记。

这仅在使用信息 Window 时有用。 在我的例子中,当用户单击标记时,会出现相应的信息 window。因此,当用户在标记外的地图中单击时,Info Window 关闭并且地图检测到该事件。

// Detect when Marker's Info Window is closed
    googleMap.setOnInfoWindowCloseListener(new GoogleMap.OnInfoWindowCloseListener() {
        @Override
        public void onInfoWindowClose(Marker marker) {
            // Do whatever you want to do here...
        }
    });