Как установить свою иконку для маркеров в кластерере в Google Maps

Я использую кластеризацию 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.

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


person Vasilov Artur    schedule 14.05.2014    source источник


Ответы (1)


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

public class OwnIconRendered extends DefaultClusterRenderer<AbstractMarker>

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

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

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

person Vasilov Artur    schedule 15.05.2014
comment
Я думаю, что уже слишком поздно, но на будущее вы можете посмотреть здесь stackoverflow.com/questions/27745299/ - person Vasilov Artur; 10.12.2015
comment
в моем случае мне пришлось позвонить super().onBeforeClustererItemRendered - person murt; 03.07.2017
comment
Привет! Поздно с этим. Но как повлияло на кластеризацию добавление пользовательских значков? Насколько медленнее? Не могли бы вы поделиться некоторыми цифрами? Я также работаю над аналогичной проблемой, и я хочу получить некоторое представление о том, сколько производительности требуется, прежде чем я начну. @VasilovArtur - person Rohitesh; 05.04.2018