0
我创建android系统中使用RadiusMarkerClusterer标记集群。我想显示构成特定标记簇的标记的位置。在制作群集后,我没有得到如何检索标记信息。 是否可以这样做?如果是,那么如何?得到一个集群中的所有标志物OSMBonusPack
我创建android系统中使用RadiusMarkerClusterer标记集群。我想显示构成特定标记簇的标记的位置。在制作群集后,我没有得到如何检索标记信息。 是否可以这样做?如果是,那么如何?得到一个集群中的所有标志物OSMBonusPack
RadiusMarkerClusterer是MarkerClusterer(抽象父级)的非常简单的子类,它不向调用者提供有关聚集标记的任何信息。但内部类有存储在您可以创建自己的实现的StaticCluster
的情况下,这种信息。看的RadiusMarkerClusterer的源代码,并将其用作导向或示例。另一种解决方案可以是子类RadiusMarkerClusterer并重写方法buildClusterMarker。您可以通过添加setRelatedObjectMethod你需要创建标记信息,或者可以创建你想要的任何信息的信息窗口。
例如:
@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;
}
只是为了澄清
什么时候,这buildClusterMarker其实叫什么名字?就像每当我在RadiusMarkerClusterer的实例中添加标记时一样? –
它实际上更频繁。当缩放变化时,MarkerClusterer的当前细节会重建簇。来源:https://github.com/MKergall/osmbonuspack/blob/f08a121031abd6fabcc17a0c08de60821d595537/OSMBonusPack/src/main/java/org/osmdroid/bonuspack/clustering/MarkerClusterer.java#L97 –