Google会在Android上使用群集映射自定义标记图标

Joe*_*ooy 7 android google-maps google-maps-markers android-maps-utils

我已经实现了Google Maps Clustering的代码

这是我活动中的代码

private void setUpClusterer() {
    mClusterManager = new ClusterManager<StoreItem>(this, mMap);
    mMap.setOnCameraChangeListener(mClusterManager);
    mMap.setOnMarkerClickListener(mClusterManager);
}

public void addItems(List<Store> stores) {
    for (Store store : stores) {
        mClusterManager.addItem(new StoreItem(store.getImage(), store.getLocation().getLatitude(), store.getLocation().getLongitude()));
    }
}

private void removeAllItems() {
    mClusterManager.clearItems();
}
Run Code Online (Sandbox Code Playgroud)

这是StoreItem类

public class StoreItem implements ClusterItem {

    private String url;
    private final LatLng mPosition;

    public StoreItem(String url, double lat, double lng) {
        this.url = url;
        mPosition = new LatLng(lat, lng);
    }

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

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想通过StoreItem类中的url参数更改标记图标.

我怎样才能做到这一点?

Ale*_*nov 5

考虑重写onBeforeClusterRendered.类似的东西会起作用:

BitmapDescriptor descriptor = BitmapDescriptorFactory.fromBitmap(here_goes_your_bitmap);
markerOptions.icon(descriptor);
Run Code Online (Sandbox Code Playgroud)

请记住,代码仅用于示例.您必须手动将文本添加到位图并添加一些实际使用的缓存机制.您可以看到DefaultClusterRenderer的源代码示例.