2017-08-27 39 views

回答

0

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; 

} 
只是为了澄清
+0

什么时候,这buildClusterMarker其实叫什么名字?就像每当我在RadiusMarkerClusterer的实例中添加标记时一样? –

+0

它实际上更频繁。当缩放变化时,MarkerClusterer的当前细节会重建簇。来源:https://github.com/MKergall/osmbonuspack/blob/f08a121031abd6fabcc17a0c08de60821d595537/OSMBonusPack/src/main/java/org/osmdroid/bonuspack/clustering/MarkerClusterer.java#L97 –

相关问题