Подтвердить что ты не робот

Как установить собственный значок для маркеров в кластере в Картах Google

Я использую кластер GoogleMaps. У меня есть 4 разных типа маркеров, каждый из которых простирается от одного абстрактного класса, каждый имеет свой значок owm и определяется в поле MarkerOptions. Я использую ClusterManager для этого абстрактного класса. Когда я просто использую

//marker is instance of one of extended classes and has abstract class type
clusterManager.addItem(marker);

После кластеризации он устанавливает значок по умолчанию. Как я могу это исправить? Я пытался использовать что-то вроде этого:

//marker is abstract marker, getMarker returns the MarkerOptions of this marker
clusterManager.getMarkerCollection().addMarker(marker.getMarker());

но он тоже не работает, маркер печатается с нужным значком на карте, но без кластеризации.

Должен ли я создать какой-либо метод в моем абстрактном классе, или есть какой-то способ сделать это, начиная с DefaultClusterRenderer? Я не нашел информацию об этом с помощью Google или изучил карты google.

Спасибо за помощь!

4b9b3361

Ответ 1

Итак, это было глупо. Опять же, это показывает, что я должен уделять больше внимания, изучая библиотеку. Если кто-то заинтересован в ответе, вот он: Я был прав, полагая, что мне нужно переопределить какой-либо метод в DefaultClusterRenderer. Итак, полный путь: Создайте собственный класс и расширьте его из DefaultClusterRenderer:

public class OwnIconRendered extends DefaultClusterRenderer<AbstractMarker>

Затем переопределите метод onBeforeClusterItemRendered:

@Override
protected void onBeforeClusterItemRendered(AbstractMarker item,
        MarkerOptions markerOptions) {
    markerOptions.icon(item.getMarker().getIcon());
}

Путь довольно простой, но мне кажется, что кластеризация начала работать медленнее. Итак, это достаточно.