2015-04-22 13 views
5

Obecnie próbuję zmienić kolor ikony klastra (domyślnie jest niebieski), ale nie mogę tego rozgryźć. Mam już skonfigurowanego menedżera klastrów i takie, i widzę samą ikonę, ale jest niebieska. Obecnie używam domyślnej konfiguracji Google (zobacz poniższy kod), aby skonfigurować moją mapę. Każda pomoc będzie mile widzianeJak mogę zmienić kolor klastrów na mojej mapie Google na Androida?

Dzięki,

Jacoba

public class MainActivity extends Activity { 
    GoogleMap map; 
    ClusterManager mClusterManager; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     MapFragment mapFragment = (MapFragment) getFragmentManager() 
       .findFragmentById(R.id.map); 
     map = mapFragment.getMap(); 
     setUpClusterer(); 
    } 
    private void setUpClusterer() { 
     // Declare a variable for the cluster manager. 


     // Position the map. 
     map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(51.503186, -0.126446), 10)); 

     // Initialize the manager with the context and the map. 
     // (Activity extends context, so we can pass 'this' in the constructor.) 
     mClusterManager = new ClusterManager<MyItem>(this, map); 

     // Point the map's listeners at the listeners implemented by the cluster 
     // manager. 
     map.setOnCameraChangeListener(mClusterManager); 
     map.setOnMarkerClickListener(mClusterManager); 

     // Add cluster items (markers) to the cluster manager. 
     addItems(); 
    } 

    private void addItems() { 

     // Set some lat/lng coordinates to start with. 
     double lat = 51.5145160; 
     double lng = -0.1270060; 

     // Add ten cluster items in close proximity, for purposes of this example. 
     for (int i = 0; i < 2; i++) { 
      double offset = i/60d; 
      lat = lat + offset; 
      lng = lng + offset; 
      MyItem offsetItem = new MyItem(lat, lng); 
      mClusterManager.addItem(offsetItem); 
     } 
    } 
} 


class MyItem implements ClusterItem { 
    private final LatLng mPosition; 

    public MyItem(double lat, double lng) { 
     mPosition = new LatLng(lat, lng); 
    } 

    @Override 
    public LatLng getPosition() { 
     return mPosition; 
    } 
} 
+1

Można spróbować mieć niestandardową ikonę dla https klastra: //developers.google.com/maps/documentation/android/utility/marker-clustering#custom – Verma

Odpowiedz

2

Jak zauważył Verma w komentarzach jest to możliwe do wykonania w pełni konfigurowalny ikonę klastra. Jeśli chcesz tylko zmienić kolor tła w domyślnej ikonie, ten kod zrobi.

czy inaczej trzeba ustawić renderer dla ClusterManager:

mClusterManager.setRenderer(new CustomClusterRenderer(MainActivity.this, map, mClusterManager)); 

Dla CustomClusterRenderer można rozszerzyć DefaultClusterRenderer tak:

public class CustomClusterRenderer extends DefaultClusterRenderer<MyItem> { 

    public CustomClusterRenderer(Context context, GoogleMap map, ClusterManager<MyItem> clusterManager) { 
     super(context, map, clusterManager 
    } 

    @Override 
    protected void getColor(int clusterSize) { 
     return Color.BLUE // Return any color you want here. You can base it on clusterSize. 
    } 

    /* 
    @Override 
    protected void onBeforeClusterItemRendered(T item, MarkerOptions markerOptions) { 
     // Use this method to set your own icon for the markers 
    } 

    @Override 
    protected void onBeforeClusterRendered(Cluster<T> cluster, MarkerOptions markerOptions) { 
     // Use this method to set your own icon for the clusters 
    } 
    */ 
} 
Powiązane problemy