使用ClusterManager时如何获取每个Marker objectID

时间:2015-04-17 00:28:18

标签: android google-maps-markers markerclusterer

不使用ClusterManager,我使用HashMap将标记和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将多个标记聚类到数字中。

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

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

1 个答案:

答案 0 :(得分:-1)

有一个全球解决方案可以帮助您添加标题,代码段和图标,以便获得所需内容。

修改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);
    }
}

之后只需在addItems()之前将此行放入SetUpCluster()函数中:

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