【问题标题】:How to determine what cluster item is clicked?如何判断点击的是哪个集群项?
【发布时间】:2015-10-02 11:05:31
【问题描述】:

我正在使用 Android 地图实用程序。我正在从在线读取坐标列表并将它们绘制为集群项目,并将它们保存在哈希图中,该哈希映射将我创建的类“房间”与集群项目相关联:

私有HashMap roomHashMap = new HashMap();

单击此集群项目的信息窗口时,我需要检索与集群项目关联的房间。我已经使用没有问题的标记实现了这一点,因为在 onInfoWindowClickListener 我刚刚添加了 roomHashMap.get(marker) 但现在我不能这样做,因为在信息窗口中它仍然需要一个标记,但我有一个 ClusterItem 的 HashMap

   mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {

        @Override
        public void onInfoWindowClick(Marker marker) {

            //Ideally I want this
           //Room currenRoom=roomHashMap.get(clusterItem);
          //but clusterItem is obviously not a Marker
        }

    });

【问题讨论】:

标签: android google-maps google-maps-markers google-maps-android-api-2 android-maps-utils


【解决方案1】:
        googleMap = mFragment.getMap();
        googleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
        googleMap.getUiSettings().setZoomControlsEnabled(true); // true to
        googleMap.getUiSettings().setZoomGesturesEnabled(true);
        googleMap.getUiSettings().setCompassEnabled(true);
        googleMap.getUiSettings().setMyLocationButtonEnabled(true);
        googleMap.getUiSettings().setRotateGesturesEnabled(true);
        if (googleMap == null) {
            Toast.makeText(getActivity(), "Sorry! unable to create maps",
                    Toast.LENGTH_SHORT).show();
        }
        mClusterManager = new ClusterManager<MyItem>(getActivity(),             googleMap );
        googleMap.setOnMapLoadedCallback(this);
        googleMap.setMyLocationEnabled(true);
        googleMap.setBuildingsEnabled(true);
        googleMap.getUiSettings().setTiltGesturesEnabled(true);

        markers = new Hashtable<String, String>();
        mClusterManager.setRenderer(new MyClusterRenderer(getActivity() ,     googleMap , mClusterManager ));

公共类 MyClusterRenderer 扩展 DefaultClusterRenderer {

public MyClusterRenderer(Context context, GoogleMap map,
        ClusterManager<MyItem> clusterManager) {
    super(context, map, clusterManager);
}

@Override
protected void onBeforeClusterItemRendered(MyItem item, MarkerOptions markerOptions) {
    super.onBeforeClusterItemRendered(item, markerOptions);

    markerOptions.title(item.getTitle());
    markerOptions.snippet(item.getAddress());
}

@Override
protected void onClusterItemRendered(MyItem clusterItem, Marker marker) {
    super.onClusterItemRendered(clusterItem, marker);
    //here you have access to the marker itself
}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-23
    • 2022-08-19
    • 2017-11-20
    • 2013-10-09
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多