听众在标记之外映射触摸

时间:2016-04-19 18:03:16

标签: android android-maps-v2 android-maps

我正在使用谷歌地图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....

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

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

这可以轻松完成吗?任何指针都非常感谢。

THX!

2 个答案:

答案 0 :(得分:4)

好的,我认为这很容易。
您有OnMarkerClickListenerOnMapClickListener

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

还有一件事 - 当您添加标记时,将它们存储在Arraylist中 - 然后您可以随时执行任何操作 - 甚至从地图中删除所有标记。

答案 1 :(得分:0)

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

// 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...
        }
    });