【问题标题】:How to get each Marker objectID when using ClusterManager使用 ClusterManager 时如何获取每个 Marker objectID
【发布时间】:2015-06-23 15:45:20
【问题描述】:

不使用ClusterManager,我使用HashMap将Marker和ID放入HashMap中,并在OnMarkClick方法中获取ID并从数据库中获取数据。它的作品

markers.put(addNewMarker(geoPoint), objectId);

private Marker addNewMarker(ParseGeoPoint parseGeoPoint) {
    double latitude = parseGeoPoint.getLatitude();
    double longitude = parseGeoPoint.getLongitude();
    return googleMap.addMarker(new MarkerOptions().position(
            new LatLng(latitude, longitude)));
}

@Override
public boolean onMarkerClick(Marker marker) {
    String objectId = markers.get(marker);
    if (null == objectId) {
        return false;
    }
    getMemoryBriefInfo(objectId);
    return true;
}

但现在我需要使用ClusterManager 将多个标记聚集成数字。

问题是似乎没有办法实现这一点,在谷歌的demo中,它只是将项目添加到集群中。

ClusterManager 类中有一个 OnMarkerClick 方法,但我不知道如何覆盖它并使用我自己的唯一 ID 进行设置。

【问题讨论】:

    标签: android google-maps-markers markerclusterer


    【解决方案1】:

    为您提供了一个全局解决方案,可帮助您添加标题、sn-p 和图标,以便您获得所需的内容。

    修改您的 ClusterItem 对象并添加 3 个变量:

    public class MyItem implements ClusterItem {
    
    private final LatLng mPosition;
    BitmapDescriptor icon;
    String title;
    String snippet;
    
    public MyItem(BitmapDescriptor ic,Double lat , Double lng,String tit ,String sni)
    {
        mPosition = new LatLng(lat,lng);
        icon = ic;
        title = tit;
        snippet = sni;
    
    }
    

    在你创建了你的服装渲染之后:

    public class OwnRendring extends DefaultClusterRenderer<MyItem> {
    
        public OwnRendring(Context context, GoogleMap map,
                               ClusterManager<MyItem> clusterManager) {
            super(context, map, clusterManager);
        }
    
    
        protected void onBeforeClusterItemRendered(MyItem item, MarkerOptions markerOptions) {
    
            markerOptions.icon(item.getIcon());
            markerOptions.snippet(item.getSnippet());
            markerOptions.title(item.getTitle());
            super.onBeforeClusterItemRendered(item, markerOptions);
        }
    }
    

    之后,只需将此行放在您的 SetUpCluster() 函数中,然后放在 addItems() 之前:

     mClusterManager.setRenderer(new OwnRendring(getApplicationContext(),mMap,mClusterManager));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      • 2016-01-31
      • 1970-01-01
      • 2018-02-13
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      相关资源
      最近更新 更多