Клуб API Карт

Иконки в макете кластера аккордион

Пост в архиве.

У меня такая ситуация. Дорабатываю кластеризатор, по совету уважемого сообщества все хорошо получается. Вот только мелкий нюанс возник.

 

Сами кластеры то у меня нужных цветов, а вот для макета кластера аккордион указывались свои картинки иконок с помощью опции balloonIconImageHref.  При переходе на api 2.1 иконки стали стандартными.  Посмотрел документацию http://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/ClusterPlacemark.xml и ничего похожего не нашел. Свой макет не вижу смысла делать. Что я упустил?  Пока временно оставил стандартные, но разных цветов, но хотелось бы использовать свои изображения.

 

Есть еще один момент. Я обновляю кластер: clusterer.removeAll(); clusterer.add(m); m - массив меток. Все нормально, но старые метки остаются на дефолтном масштабе. Т.е. сменю масштаб, то что надо вывыводится, возвращаю на основной масштаб - лишние метки. Т.е. где-то кешируется.

10 комментариев
Всеволод Шмыров
28 января 2016, 00:13
Добрый день. Про метки. В версии 2.1 поддержка собственных изображений в макете аккордеоне была убрана, так как этот кейс не пользовался популярностью и достаточно сильно влиял на производительность построения макета.

Сейчас единственное решение - это создать собственный макет. Для этого у нас есть новый пример:
http://api.yandex.ru/maps/jsbox/2.1/cluster_custom_balloon_content_layout_21

Спасибо. Значит если надо, то создам собственный макет. Пока смысла не вижу.

По поводу removeAll и add - можете прислать ссылку на страницу, где баг воспроизводится?

http://tb.reactive.by/private/plasticcards/cash/

Там внизу кнопка показать банкоматы партнеров, потом как добавятся парнетрские банкоматы надо опять клинуть по кнопке и вывести только банкоматы Технобанка.  У меня остаются все, но только на изначальном масштабе. Если меняю маштаб, то только нужные банкоматы на карте. Недавно недочет заметил.

Вы не могли бы подключить апи в режиме  debug?

Оффтопик - заметила, что у вас в методе createCluster неверно написано слово length - часть логики там не срабатывает. Но это не имеет отношения к текущему багу)

Спасибо, да там ошибка случайно вышла. Просто кластеры всегда почти синими должны быть, поэтому и не заметил ошибку.

Дебаг подключен. Сам чуть позже посмотрю тоже.

Можете попробовать заменить строчку clusterer.removeAll на строчку clusterer.remove(clusterer.getGeoObjects())? баг будет воспроизводиться?

Есть подозрение, что баг возникает из-за того, что вы каждый раз при обновлении данных добавляете кластеризатор повторно на карту. Попробуйте добавлять кластеризатор на карту один раз после создания и не добавлять его в методе refresh, это должно помочь

Спасибо, так оно и есть.  Раньше создавалось несколько экземпляров класса, а следовательно и кластеров - сейчас оно не нужно.

В будущих релизах починим, чтобы эти действия не ломали логику.