Клуб API Карт

Найдено на тему «clusterer»:
Некорректно срабатывают события балуна на кластерах
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
Более 1000 точек вызывают ошибку Яндекс.Карт
Имя
10 января 2017, 16:35

https://jsfiddle.net/frontenddeveloping/936drznz/

Выскакивают ошибки:

Uncaught TypeError: this.builders[s] is not a function
Uncaught TypeError: Cannot read property 'setPosition' of null

Ничего не понимаю. Это для 2000 точек. Если количество уменьшить, то оно отработает как надо.

2 комментария
clusterer,cluster
Поменять шаблон кластера при его открытии
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
Нужен вычисляемый аналог iconContent для кластера
KDV
25 февраля 2016, 12:50

День добрый.

Нужен работоспособный пример для API 2.1 по созданию и изменению вычисляемого атрибута iconContent для кластера, т.е. нужно иметь возможность внутри иконки кластера отображать не кол-во объектов, а значение, вычисляемое на основе свойств этих объектов вошедших в кластер.

Ранее по совету из этого клуба использовал создание пользовательского clusterIconContentLayout с переопределением метода build, но у данного решения есть огромный минус не только в избыточности и неэлегантности кода, но и в отсутствии возможности пересчитывать значение внутри метки кластера в процессе изменения объектов в его составе ибо значение внутри метки кластера формируется 1 раз при его создании, а потом уже не меняется.

Пересоздавать кластер не предлагать ибо учитывая число кластеров и объектов на карте это весьма затратная операция.

PS Когда уже введете поле clusterIconContent для кластера дабы писать в него напрямую по аналогии как у Placemark ?

9 комментариев
API 2.1,cluster,clusterer,кластер,iconContent,clusterIconContentLayout,clusterIconContent