【问题标题】:Android - show info window (title) on cluster item clickAndroid - 在集群项目单击时显示信息窗口(标题)
【发布时间】:2016-08-09 11:52:44
【问题描述】:

无法理解这个问题。 我有一个集群渲染器(OffersClusterRenderer),其中

@Override
protected void onBeforeClusterItemRendered(OffersMarker item,
                                           MarkerOptions markerOptions) {
    int itemNumberOfOffers = item.getNrOfOffers();
    BitmapDescriptor markerDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.ro1);

    markerOptions.icon(markerDescriptor);
    markerOptions.snippet("Show");
    markerOptions.title("Show");
    super.onBeforeClusterItemRendered(item, markerOptions);
}

我也有 ClusterManager,在我的活动中我正在运行这个:

rentClusterManager = new ClusterManager<OffersMarker>(this, gmap);
rentClusterManager.setRenderer(rentClusterRenderer);

我的问题是,如何在调用 onClusterItemClick 时显示标记的信息窗口(标题)?

不应该默认显示吗?谷歌文档中是这样说的。

【问题讨论】:

    标签: android google-maps


    【解决方案1】:

    这是我设法做到这一点的方法(这是 Kotlin 代码,但你应该理解它)。 将此方法添加到您的自定义渲染器中:

    internal fun showInfoWindow(marker: OffersMarker) {
        this.getMarker(marker).showInfoWindow()
    }
    

    然后在onClusterItemClick(marker: OffersMarker) 中添加这一行:

    (mClusterManager.renderer as RentClusterRenderer).showInfoWindow(marker)
    

    【讨论】:

      【解决方案2】:

      您需要实现 onClusterItemClick 的方法,该方法可以在您的活动中被覆盖。

      【讨论】:

      • 我有那个方法,但是它应该包含什么才能显示标题?
      • 你设置getMap().setOnMarkerClickListener(mClusterManager); ?
      • 并且你需要设置 placeVO.setTitle("your title");和 sn-p placeVO.setSnippet("your sn-p");
      • 什么是placeVO?我在 ClusterRenderer.onBeforeClusterItemRendered() 方法中做了 .title 和 .snipped。
      【解决方案3】:

      @NilayDani 是正确的。您需要为onClusterItemClick 实现方法。它是显示信息窗口标题的触发点。

      信息窗口允许您在用户点击标记时向他们显示信息。一次只显示一个信息窗口。如果用户点击另一个标记,当前的信息窗口将被隐藏并显示新的信息窗口。

      添加信息窗口最简单的方法是设置相应标记的title()snippet() 方法。设置这些属性将导致在单击该标记时出现一个信息窗口。

      这是一个示例代码 sn-p 如何显示标题,包括标记的位置和 sn-p:

      static final LatLng MELBOURNE = new LatLng(-37.81319, 144.96298);
      Marker melbourne = mMap.addMarker(new MarkerOptions()
                                .position(MELBOURNE)
                                .title("Melbourne")
                                .snippet("Population: 4,137,400"));
      

      要查看完整代码,请在此处查看演示代码:https://github.com/googlemaps/android-samples/tree/master/ApiDemos

      【讨论】:

      • 谢谢,但我在 ClusterRenderer.onBeforeClusterItemRendered() 方法中有 .setTitle 和 .setSnippet。我也完成了 Map.setOnMarkerClickListener()。 onClusterItemClickListener 正在工作,但单击标记时不显示标题。
      猜你喜欢
      • 2016-03-14
      • 1970-01-01
      • 2020-07-22
      • 2017-08-21
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 2014-02-18
      相关资源
      最近更新 更多