Клуб API Карт

Найдено на тему «clusterBalloon»:
Некорректно срабатывают события балуна на кластерах
Maxim Koshel
4 марта 2017, 10:20

Почему срабатывает событие при открытие балуна при клике на placemark? Ожидается, что сработает событие только на кластере:

clusterer.events.add('balloonopen', function () {
    console.log('Открылся балун');
});

clusterer.events.add('balloonclose', function () {
    console.log('Закрылся балун');
});

Но вот такой код работает как надо:

clusterer.balloon.events.add('open', function () {
    console.log('Открылся балун');
});

clusterer.balloon.events.add('close', function () {
    console.log('Закрылся балун');
});

1 комментарий
clusterBalloon,clusterer
Заголовок попапа в кластере
Станислав М.
3 марта 2017, 18:11

Использую версию API 2.1 для создания кластера.        

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

 let placemarkContent = {
                balloonContentBody: '',
                clusterCaption: 'Метка 1',
    };
 let placemark = new ymaps.Placemark([55.831903,37.411961], placemarkContent);
 geoObjects.push(placemark);

Редактирование balloonContentHeader никак не решает проблему. Как можно убрать дублирование заголовка? В версии API 2.0 все было нормально - 

2 комментария
clusterBalloon,кластер
Поменять шаблон кластера при его открытии
mvblog
13 декабря 2016, 11:56

Здравствуйте , я динамически заполняю кластер с помощью ajax. Изначально я создаю кластер с

clusterBalloonContentLayout: /* шаблон балуна с прелоадером */

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

Я делаю так

var clusterer = new ymaps.Clusterer({
    clusterBalloonContentLayout: /* шаблон балуна с прелоадером */,
    /* Прочие поля */
});

clusterer.events.add('balloonopen', function(event) {
  var cluster = event.get('cluster');

  // Эмуляция ajax запроса
  setTimeout(function() {
    cluster.properties.set(
      'balloonContentBody', 'Полученные данные'
    );
  }, 2000);
});

Шаблон балуна с прелоадером

.ballon
  .ballon_body {{properties.balloonContentBody|raw}}

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

cluster.properties.set('balloonContentBody', 'Полученные данные');

Подскажите, что здесь неправильно. Спасибо!

clusterer,clusterBalloon,clusterBalloonContentLayout,динамическая загрузка,Кластер,шаблоны
Прошу подсказать по балунам Кластеров
Артём Ш.
14 ноября 2016, 07:04
//geoQueryResult
var result = ymaps.geoQuery(json).searchInside(xxxMyPoly).applyBoundsToMap(myMap, {
                        checkZoomRange: true,
                        duration: 300,
                        zoomMargin: [32,16,120,16]
                  });

//Кластер
points = result.clusterize({preset: 'islands#invertedRedClusterIcons', clusterIconColor: '#CD0608', zoomMargin: [32,16,120,16],
openBalloonOnClick: false, clusterDisableClickZoom: true});
...
$.ajax({
    url: link,
    dataType: 'JSON',
    type: 'POST',
    data: {objectid: ids},
    success: function (data) {
       if (data == null) {
          var balloon = new ymaps.Balloon(myMap);
          balloon.options.setParent(myMap.options);
          balloon.setData({content: 'Произошла ошибка получения данных'})
          balloon.open(target.geometry.getCoordinates());
          return false;
       }
       myGeoObjects.forEach(function (item) {
          var id = item.properties.get('id');
          if (typeof data[id] !== 'undefined') {
             item.properties.set('balloonContent', data[id].content);
             item.properties.set('hintContent', data[id].hint);
             item.properties.set('clusterCaption', data[id].hint);    
          }
       })
       points.balloon.open(objectState.cluster);
     }
})

Здравствуйте! Проблема в следующем: 

На карте может быть 1000 точек в одном месте, соответственно есть кластер на 1000 точек, при клике на кластер аяксом получаем данные объектов  и выводим их описания, однако есть необходимость ограничить количество точек, которые отображаются в балуне кластера используя нативный балун кластера, например до 200, но чтобы на карте человек всё равно видел, что там 1000 объектов. Как это можно реализовать или всё же придется создавать свой кастомный балун, и заменять им нативный?

6 комментариев
clusterer,clusterBalloon
Как изменить контент балуна кластера?
Андрей Федотов
23 сентября 2016, 15:52

Здравствуйте, при клике на объект, отправляется ajax запрос для получения содержимого балуна этого объекта вот так:

            objectManager.objects.events.add('click', function (e) {

                var objectId = e.get('objectId');
                var objects = [];
                objects.push(objectId);
                $.post('/ajax/balloon', {objects: objects}, function (data) {

                    var obj = objectManager.objects.getById(objectId);

                    obj.properties.balloonContent = data;

                    objectManager.objects.balloon.open(objectId);
                });
            });

Теперь требуется сделать аналогично но для кластера. Т.е. при клике на кластер, мне нужно так же отправить ajax запрос на сервер, получить список объектов, которые входят в этот кластер и подставить их в балун кластера. Проблема только с подстановкой полученных данных в балун кластера. Никак не могу заменить контент балуна кластера. Все время открывается стандартный `balloonLayout`.

Пробовал вот так:

            objectManager.clusters.events.add('click', function (e) {

                var objectId = e.get('objectId');

                //var objectState = objectManager.getObjectState(objectId);

                //var objects = objectState.cluster.getGeoObjects();
                var cluster = objectManager.clusters.getById(objectId);
                
                cluster.properties.balloonContentBody = "asd";
                objectManager.clusters.balloon.open(objectId);

            });

Толку нет! Как быть с балуном кластера? Как его заменить? На сайте http://zoon.ru/msk/fitness/ сделано это просто на УРА! Заранее спасибо.

1 комментарий
ObjectManager,clusterBalloon