单击android map v2后不要捕捉到标记

目前,Android Map v2会在点击后捕捉到标记位置。 我想禁用此行为,但看不到任何选项。

有人知道如何解决这个问题吗?

Solutions Collecting From Web of "单击android map v2后不要捕捉到标记"

基于我从Markers中读到的内容 – Google Maps Android API( https://developers.google.com/maps/documentation/android/marker#marker_click_events

标记点击事件

您可以使用OnMarkerClickListener监听标记上的单击事件。 要在地图上设置此侦听器,请调用GoogleMap.setOnMarkerClickListener(OnMarkerClickListener)。 当用户单击标记时,将调用onMarkerClick(Marker)并将标记作为parameter passing。 此方法返回一个布尔值,指示您是否已使用该事件(即,您要禁止默认行为)。 如果返回false,则除了自定义行为外,还会发生默认行为。 标记单击事件的默认行为是显示其信息窗口(如果可用)并移动摄像机,使标记在地图上居中。

您可能会覆盖此方法并让它只打开标记并返回true以使用该事件。

// Since we are consuming the event this is necessary to // manage closing opened markers before opening new ones Marker lastOpened = null; mMap.setOnMarkerClickListener(new OnMarkerClickListener() { public boolean onMarkerClick(Marker marker) { // Check if there is an open info window if (lastOpened != null) { // Close the info window lastOpened.hideInfoWindow(); // Is the marker the same marker that was already open if (lastOpened.equals(marker)) { // Nullify the lastOpened object lastOpened = null; // Return so that the info window isn't opened again return true; } } // Open the info window for the marker marker.showInfoWindow(); // Re-assign the last opened such that we can close it later lastOpened = marker; // Event was handled by our code do not launch default behaviour. return true; } }); 

这是未经测试的代码,但这可能是一个可行的解决方案。

谢谢,DMan

看来我们应该能够执行以下操作,但由于此错误 ,它不起作用,因为marker.isInfoWindowShown()始终返回false:

 mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { public boolean onMarkerClick(Marker marker) { if (marker.isInfoWindowShown()) { marker.hideInfoWindow(); } else { marker.showInfoWindow(); } return true; } }); 

但是,以下具有相同的效果并起作用:

 mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { Marker currentShown; public boolean onMarkerClick(Marker marker) { if (marker.equals(currentShown)) { marker.hideInfoWindow(); currentShown = null; } else { marker.showInfoWindow(); currentShown = marker; } return true; } }); 

由于一次只显示一个信息窗口(如Google Maps API v2开发人员指南中所述 ),如果点击了当前打开信息窗口的标记,我们只需要隐藏信息窗口。