2017-08-27 1 views
0

Ich erstelle Marker-Cluster mit RadiusMarkerClusterer in Android. Ich möchte die Positionen der Marker anzeigen, aus denen ein bestimmter Marker-Cluster besteht. Ich bekomme nicht, wie man die Marker-Information nach dem Erstellen der Cluster abruft. Ist es möglich, dies zu tun? Wenn ja, wie?Erhalten Sie alle Marker eines Clusters in OSMBonusPack

Antwort

0

RadiusMarkerClusterer ist eine ziemlich einfache Unterklasse von MarkerClusterer (abstrakte Eltern) und es bietet keine Informationen über Clustermarker für den Aufrufer. Aber intern hat die Klasse diese Informationen in den Instanzen StaticCluster

gespeichert. Sie können Ihre eigene Implementierung erstellen. Sehen Sie sich den Quellcode RadiusMarkerClusterer an und verwenden Sie ihn als Anleitung oder Beispiel. Eine andere Lösung könnte die Unterklasse RadiusMarkerClusterer und die Override-Methode buildClusterMarker sein. Sie können Informationen hinzufügen, die Sie zum Erstellen von Markern über setRelatedObjectMethod benötigen, oder Sie können ein InfoWindow mit beliebigen Informationen erstellen.

Zum Beispiel:

@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

Gerade für die Klärung, wenn nicht, wird dieser buildClusterMarker eigentlich genannt? Wie jedes Mal wenn ich einen Marker in der Instanz von RadiusMarkerClusterer hinzufüge? –

+0

Es ist eigentlich öfter. Die aktuelle Implementation von MarkerClusterer erstellt Cluster neu, wenn sich der Zoom ändert. Quelle: https://github.com/MKergall/osmbonuspack/blob/f08a121031abd6fabcc17a0c08de60821d595537/OSMBonusPack/src/main/java/org/osmdroid/bonuspack/clustering/MarkerClusterer.java#L97 –

Verwandte Themen