java - 我怎样才能改变我的安卓谷歌地图上集群的颜色?

标签 java android google-maps

目前我正在尝试更改群集图标的颜色(默认为蓝色),但我似乎无法弄清楚。我已经设置了我的集群管理器等,我可以看到图标本身,但它是蓝色的。我目前正在使用默认的 Google 设置(请参阅下面的代码)来设置我的 map 。任何帮助将不胜感激

谢谢,

雅各布

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;
    }
}

最佳答案

正如 Verma 在评论中指出的那样,可以为您的集群实现一个完全可定制的图标。如果您只想更改默认图标的背景颜色,这段代码就可以了。

无论哪种方式,您都需要为 ClusterManager 设置渲染器:

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

对于 CustomClusterRenderer,您可以像这样扩展 DefaultClusterRenderer:

public class CustomClusterRenderer extends DefaultClusterRenderer<MyItem> {

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

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

关于java - 我怎样才能改变我的安卓谷歌地图上集群的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29785890/

相关文章:

javascript - Json 结果 MVC Controller 通过 Jquery 传输到 Google map

java - Java 中具有继承性的 Varargs

java - Akka 基本程序无法运行

java - 如何使用 Elastic Java Api 而不是纯 REST 构建类型设置为 "phrase_prefix"的多匹配查询

android - 如何连接到蓝牙 a2dp 设备?

android - 空 Activity 中的内存泄漏

java - 为什么即使没有 forkOffChild(),GPars runForkJoin 也很慢?

带有测试数据输入的 Android Espresso 测试

javascript - 使用谷歌地图 API 和 phonegap 显示当前位置+方向?

android - 两个地点之间的距离(不显示 map )