不使用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进行设置。
答案 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));