Клуб API Карт

Баллун кластера

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

 

Добрый день, уважаемые коллеги!

 

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

У меня схема работы с Яндекс картой следующая: на карте размещается множество меток, которые объединены в один кластер. Этот кластер по мере приближения одного из участков карты распадается на отдельные метки или кластеры поменьше. При клике по кластеру карта масштабируется так, чтобы он мог распасться на отдельные метки. В общем-то стандартная схема работы.

Необходимо сделать следующее: когда несколько меток имеют одинаковые координаты и, соответственно, объединяющий их кластер не может распадаться даже при максимальном разрешении карты, необходимо по клику на таком кластере выводить баллун: в левой части список заголовков каждой метки, в правой части содержимое выбранной метки. Содержимое метки берется с имеющейся страницы (из специального раздела) или загружается с сервера AJAX-ом.

Собственно, все это я и сделал по аналогии с http://api.yandex.ru/maps/jsbox/cluster_balloon_layout. Единственное отличие - я не запретил по клику на баллуне масштабировать карту, так как мне нужно, чтобы так оно и делалось в штатном режиме, но в случае если масштаб карты уже максимальный, то по клику на кластере выводился баллун, в котором можно посмотреть данные всех меток, которые он включает в себя. Я столкнулся со следующими проблемами, которые не получается побороть:

1. При загрузке контента с сервера (AJAX-ом) - баллун показывает лишь верхнюю половину контента (ту, что влезла в первоначальный размер баллуна). Если контент для баллуна берется со страницы, то такой проблемы нет - баллун растягивается под контент.

2. При переключении (выборе нового) заголовка метки в левой части баллуна кластера не меняется его правая часть (а точнее: контент вновь выбранной метки подгружается в низ правой части баллуна, и его просто не видно, потому что контент предыдущей метки не очистился а остался)! Причем если сначала выбрать новый пункт в левой части, затем закрыть баллун, затем снова его открыть (кликом по кластеру), то он уже будет отображать содержимое выбранной метки.

 

Коллеги, страница - http://svobodno.org/search.php. В файле searchResult.js нужно смотреть на работу functionMapYandex() и на ymaps.ready(function() {...}). Очень жду Ваших комментариев и помощи!

4 комментария

Добавьте удаление предыдущего подмакета

var subLayout = new MyMainContentSubLayout({ options:applyContentThis.options,properties:applyContentThis.activeObject.properties });applyContentThis.getParentElement().innerHTML = '';// прицепим новый макет к родителюsubLayout.setParentElement(applyContentThis.getParentElement());
Дмитрий Ушаков
28 января 2016, 02:50

Большое спасибо! Это действительно помогло с переключением объявлений и решение-то очень простое)

Остался еще один вопрос - как заставить баллун перестраиваться под размер контента при переключении?

Пример в песочнице не рассчитан на то, что данные будут подгружаться асинхронно. Вам нужно дополнить логику - при загрузке данных активного геообъекта нужно вызывать метод rebuild у макета контента балуна.

мучался с подобной проблемой, но контент надо было не отображать, а получить свойства объектов в кластере - решено тут http://www.fotofinereader.ru/ - может поможет