Google отображает пользовательский значок маркера с кластеризацией на Android

android google-maps google-maps-markers android-maps-utils

5153 просмотра

2 ответа

343 Репутация автора

Я реализовал код кластеризации Google Maps

Это код в моей деятельности

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

Это класс 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;
    }
}

Теперь я хотел бы изменить значки маркеров с помощью параметра url в классе StoreItem.

Как я могу это сделать?

Автор: Joeri Verlooy Источник Размещён: 18.07.2016 03:00

Ответы (2)


5 плюса

2695 Репутация автора

Решение

Рассмотрим переопределение onBeforeClusterRendered . Нечто подобное будет работать:

BitmapDescriptor descriptor = BitmapDescriptorFactory.fromBitmap(here_goes_your_bitmap);
markerOptions.icon(descriptor);

Имейте в виду, что код только для примера. Вы должны добавить текст в растровое изображение вручную и добавить некоторый механизм кэширования для реального использования. Вы можете увидеть исходный код DefaultClusterRenderer для примера.

Автор: Alexander Mironov Размещён: 18.07.2016 09:44

3 плюса

241 Репутация автора

вам нужно @override метод onBeforeClusterItemRendered () из класса DefaultClusterRenderer получить iconurl в onBeforeClusterItemRendered установить маркерOptions, пожалуйста, найдите ниже код:

private class CustomMapClusterRenderer<T extends ClusterItem> extends DefaultClusterRenderer<T> {
        CustomMapClusterRenderer(Context context, GoogleMap map, ClusterManager<T> clusterManager) {
            super(context, map, clusterManager);
        }

        @Override
        protected boolean shouldRenderAsCluster(Cluster<T> cluster) {
            //start clustering if 2 or more items overlap
            return cluster.getSize() >= Constants.MINIMUM_CLUSTER_SIZE;
        }

        @Override
        protected void onBeforeClusterItemRendered(T item,
                                                   MarkerOptions markerOptions) {
            ClusterMarkerItem markerItem = (ClusterMarkerItem) item;
            markerOptions.icon(BitmapDescriptorFactory.fromPath(markerItem.getURL()));
        }
    }
Автор: Neelesh Atale Размещён: 27.04.2018 07:18
Вопросы из категории :
32x32