我在android中使用RadiusMarkerClusterer创建标记簇。我想显示制作特定标记簇的标记的位置。我没有得到如何在制作群集后检索标记信息。 有可能这样做吗?如果是,那么如何?
答案 0 :(得分:0)
RadiusMarkerClusterer是MarkerClusterer(抽象父类)的非常简单的子类,它不向调用者提供有关聚簇标记的任何信息。但是在内部,类将此信息存储在StaticCluster
的实例中您可以创建自己的实现。查看RadiusMarkerClusterer的源代码,并将其用作指南或示例。另一种解决方案可能是子类RadiusMarkerClusterer和覆盖方法buildClusterMarker。您可以通过setRelatedObjectMethod添加创建标记所需的信息,也可以使用所需的任何信息创建InfoWindow。
例如:
@Override public Marker buildClusterMarker(StaticCluster cluster, MapView mapView) {
Marker m = new Marker(mapView);
m.setPosition(cluster.getPosition());
m.setInfoWindow(null);
m.setAnchor(mAnchorU, mAnchorV);
Bitmap finalIcon = Bitmap.createBitmap(mClusterIcon.getWidth(), mClusterIcon.getHeight(), mClusterIcon.getConfig());
Canvas iconCanvas = new Canvas(finalIcon);
iconCanvas.drawBitmap(mClusterIcon, 0, 0, null);
String text = "" + cluster.getSize();
int textHeight = (int) (mTextPaint.descent() + mTextPaint.ascent());
iconCanvas.drawText(text,
mTextAnchorU * finalIcon.getWidth(),
mTextAnchorV * finalIcon.getHeight() - textHeight / 2,
mTextPaint);
m.setIcon(new BitmapDrawable(mapView.getContext().getResources(), finalIcon));
//beggining of modification
List<Marker> markersInCluster = new ArrayList<Marker>();
for (int i = 0; i < cluster.getSize(); i++) {
markersInCluster.add(cluster.getItem(i))
}
m.setRelatedObject(markersInCluster);
//end of modification
return m;
}