Как установить собственный значок для маркеров в кластере в Картах 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.
Спасибо за помощь!
Ответы
Ответ 1
Итак, это было глупо. Опять же, это показывает, что я должен уделять больше внимания, изучая библиотеку. Если кто-то заинтересован в ответе, вот он:
Я был прав, полагая, что мне нужно переопределить какой-либо метод в DefaultClusterRenderer. Итак, полный путь:
Создайте собственный класс и расширьте его из DefaultClusterRenderer:
public class OwnIconRendered extends DefaultClusterRenderer<AbstractMarker>
Затем переопределите метод onBeforeClusterItemRendered:
@Override
protected void onBeforeClusterItemRendered(AbstractMarker item,
MarkerOptions markerOptions) {
markerOptions.icon(item.getMarker().getIcon());
}
Путь довольно простой, но мне кажется, что кластеризация начала работать медленнее. Итак, это достаточно.