在Android Google Maps API v2中隐藏标记物信息窗口

22

目前,我能够使用Android Google Maps API v2在Google地图中查看所有我的标记。

在地图中添加我的标记:

mapView.addMarker
     (new MarkerOptions()
      .position(aUsersLocation).
      icon(BitmapDescriptorFactory.fromBitmap(aUserImage))
      .snippet(My_VALUE_1)
      .title(My_VALUE_2)
     .hideInfoWindow();

我有几个标记,并为每个标记的片段和标题分配了一些值(My_VALUE_1和My_VALUE_2)。当用户点击一个标记时,我需要这些唯一的值,并且我将在onMarkerClick监听器中接收这些值:

        @Override
        public boolean onMarkerClick(Marker theMarker) 
        {
            String aValue1 = theMarker.getSnippet();
            String aValue2 = theMarker.getTitle();
            theMarker.getPosition().latitude...
           ...
            return false;
        }

我的问题是:当我将代码片段和标题值添加到标记中时,当用户单击标记时,会显示信息窗口。

我需要隐藏标记的信息窗口。我尝试过使用hideInfoWindow,但似乎不起作用。

请问有什么建议吗?

谢谢。

2个回答

105
return true;

onMarkerClick 到禁用默认行为以防止显示信息窗口并在标记上居中。


29
顺便提一下,如果你仍然想保留地图居中到标记位置的动画效果(但只是想隐藏信息窗口),只需在 return true; 之前添加 mapView.animateCamera(CameraUpdateFactory.newLatLng(marker.getPosition())); 即可。 - saschoar
非常感谢你们的回答/评论! - deimos1988
如果我只想显示信息窗口而不进行中心移动动画,你能否提供解决方案?请给出建议。 - Hitesh Dhamshaniya
@HiteshDhamshaniya 那么我猜你会调用 marker.showInfoWindow()return true,这表示点击由你的代码处理。 - MaciejGórski
@MaciejGórski 谢谢回复。 - Hitesh Dhamshaniya

2
如果您使用集群,请这样写:
private var clusterManager: ClusterManager<SomeClusterItem>? = null

override fun onMapReady(googleMap: GoogleMap) {
    this.googleMap = googleMap

    clusterManager = ClusterManager(context!!, googleMap)
    ... // Other clusterManager and clusterRenderer initializations.

    clusterManager!!.setOnClusterItemClickListener { item ->
        // selectMarker(item)
        true // false, if you want to show InfoWindow.
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接