Клуб API Карт

Найдено на тему «кластер»:
Кластер в виде круговой диаграммы. 2 маркера в одной точке
kenigan
24 июня 2017, 22:46

Здравствуйте. Использую кластер в виде диаграммы и возникла ситуация, что в одной точке (координаты широты и долготы одинаковы) может находиться несколько маркеров. Подскажите, как можно обработать этот случай? Сейчас при клике пытается открыть один из маркеров, видимо, но не выходит. (Использую функционал отсюда https://tech.yandex.ru/maps/jsbox/2.1/clusterer_pie_chart).

Наверное, нужно что-то вроде такого: при клике на кластер, происходило увеличение, но если достигнуто максимальное увеличение и имеется больше одной точки, то как-то обработать этот случай надо. Никто не сталкивался с таким?

1 комментарий
Кластер
Высота балуна кластера
Дракон
24 апреля 2017, 14:36

Всем привет.

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

Нашёл один пост от 2013 года, в котором написано, что такого сделать нельзя. Может сейчас что-то изменилось.

Подскажите, пожалуйста.

4 комментария
балун,Кластер
Мигание кластера
Пархоменко Евгений
31 марта 2017, 12:15

Здравствуйте. Есть задача, нужно чтобы элемент кластера "Диаграмма" мигал двумя цветами, если стоит определенное условие. Отдельно метка меняет свой цвет, а в кластере только если зумить или открывать кластер. Можно ли как-то сделать автообновление кластера?
for (var i = 0, len = trains.length; i < len; i++) {
        var item = new ymaps.Placemark(getStation(trains[i].Station),
        {
            balloonContentHeader: 'Индекс поезда: ' +trains[i].IndexTrain,
            balloonContentBody:getContentBody(trains[i]),
        },
    {});
        if(getColor(trains[i].StationTo)==1){
item.options.set('preset','islands#darkBlueIcon');
item.options.set('defaultPreset','islands#darkBlueIcon');
        }
        else {item.options.set('preset','islands#yellowIcon');
item.options.set('defaultPreset','islands#yellowIcon');        }
        geoObjects.push(item);
    }

10 комментариев
Кластер,метка
Определение распада кластера на отдельные точки
Maxim Koshel
7 марта 2017, 16:55

Можно ли как-то определить, что кластер неделим (в конце концов не распадется на отдельные точки, например, один адрес)?

3 комментария
кластер,кластеризация
Заголовок попапа в кластере
Станислав М.
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,кластер
Разделение кластеров
Пархоменко Евгений
16 февраля 2017, 10:51

Здравствуйте. Есть необходимость отделить кластеры, которые находятся в одинаковых координатах. Необходимо именно визуально разделить, а не сделать кластер в виде пирог. Существует ли такая возможность?

6 комментариев
Кластер,кластеризация
Открыть кластер по клику на ссылку
tarverdyan.n
2 февраля 2017, 08:55

Здравствуйте. 

Нужно открыть соответствующий кластер по клику на ссылки. Вот что должно получится в итоге. http://take.ms/mFz0I

Создаю карту

ymaps.ready(init);
function init () {
    var myMap = new ymaps.Map("map", {
      center: [55.6938,37.6001],
      zoom: 5,
      controls: [],
    });
    var myGeoObjects = [];
    myGeoObjects[0] = new ymaps.Placemark([55.6740,37.7333],{
      clusterCaption: 'Moscow',
      },{
      iconLayout: 'default#image',
      iconImageHref: 'map.png',
      iconImageSize: [28, 42],
    });
    myGeoObjects[1] = new ymaps.Placemark([56.6990,37.7333],{
      clusterCaption: 'Moscow',
      },{
      iconLayout: 'default#image',
      iconImageHref: 'map.png',
      iconImageSize: [28, 42],
    });
    myGeoObjects[2] = new ymaps.Placemark([56.299278725518555,43.99715184918819],{
          clusterCaption: 'Nnov', 
          },{
          iconLayout: 'default#image',
          iconImageHref: 'map.png',
          iconImageSize: [28, 42],
        });
    myGeoObjects[3] = new ymaps.Placemark([56.30080581135179,43.99715184918819],{
          clusterCaption: 'Nnov', 
          },{
          iconLayout: 'default#image',
          iconImageHref: 'map.png',
          iconImageSize: [28, 42],
        });

    var clusterer = new ymaps.Clusterer({
          clusterDisableClickZoom: false,
          clusterOpenBalloonOnClick: false,
          clusterBalloonContentLayout: 'cluster#balloonCarousel',
     });
    clusterer.add(myGeoObjects);
    myMap.geoObjects.add(clusterer);
}

Как связать ссылки с кластерами, чтобы по клику их открывать? Покажите пожалуйста маленький пример если не сложно. jsfiddle

1 комментарий
кластеризация,Кластер,События меток кластеризатора
Алгоритм расчета числа в кластере
avernusx
23 января 2017, 17:50

Добрый день!

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

2 комментария
кластеризация,Кластер
Поменять шаблон кластера при его открытии
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,динамическая загрузка,Кластер,шаблоны
Соединить много коллекций в 1 кластер
jipebed
28 октября 2016, 12:01

Здравствуйте , используя пример из песочницы создал коллекции.
Коллекций около 10 , а меток больше 1000.
Возник вопрос кластеризации.
http://jsfiddle.net/ta73x6v0/
В примере  у каждой колекции свой кластер. Что очень неудобно ибо кластери накладываются на кластеры. Как впихнуть все коллекции в 1 кластер ?

И ище при клике на назваия  колекции ,  должны появляется/скрываться метки этой коллекции.

Тут 
http://jsfiddle.net/yn9dou60/ 

все метки в одном кластере но при нажатии на  назваия  колекции пропадает не колекция а весь кластер

С ув.

кластеризация,Кластер
Доступ к кластеру со стороны кластеризованной метки
denis.ezhkov
12 сентября 2016, 19:40

Добрый день. Направьте пожалуйста в нужную сторону. 

На странице есть список элементов, связанных с точками на карте. При клике на элемент я могу получить доступ к соответствующему геообъекту. Иногда этот геообъект входит в кластер. Как получить доступ к этому кластеру, если в настоящий момент геообъект закластеризован? Кластеризую через ObjectManager.

Спасибо

2 комментария
ObjectManager,кластеризация,GeoObject,метка,Кластер
ObjectManager, содержимое макета кластера
denis.ezhkov
6 сентября 2016, 17:02

Здравствуйте. 

Не могу разобраться, как задать содержимое макета кластера на основе информации входящих в него точек.

Все примеры, которые нашел, используют Clusterer и перекрытие некоторых методов. В моем случае я использую ObjectManager, clusterize:true и геообъекты вида 

{
  type: 'Feature',
  id: 123,
  geometry: {
    type: 'Point',
    coordinates: coords
  },
  properties: {
    iconContent: 123,
  },
  options: {
    iconLayout: pointLayout,
  }
}

На основе iconContent геообъектов, входящих в кластер, мне нужно формировать содержимое иконки кластера. Как это правильно сделать?

Спасибо

7 комментариев
ObjectManager,шаблоны,Кластер,макет кластера
Прячим метки и кластеры
chi.kozlov
18 июля 2016, 14:20

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

$('ymaps').length = 505

Удаление ObjectManager.removeAll() приводит к подвисанию на 3-4 секунды.
Как понимаю просто само наличие на страницы 500 html объектов приводит к трудностям.

Получается как не оптимизируй, все равно меньше объектов не сделать (кластиризация на сервере и потайловая загрузка). Как оптимизированно спрятать объекты в момент ухода со слайда, не нашел. Однако если просто передвинуть карту где нет меток то:

$('ymaps').length = 70 и все летает просто.

Вопрос как спрятать метки когда они уже не нужны? Простите в документации не нашел.

ObjectManager,API 2.1,JavaScript,Метка,Кластер
Кластеры за пределами видимой области карты
Швалёв Дмитрий
4 июня 2016, 13:54

Добрый день, есть задача соединить линиями кластеры геообъектов. На карту добавляются геоточки, затем добавляются кластеры, по координатам кластеров (geometry.getCoordinates()) создаётся ломаная (Polyline).

Проблема возникает когда кластер уходит за пределы видимой карты. В документации
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Clusterer-docpage/
есть упоминание: "Если объект не попадает в видимую область карты, он не будет добавлен на карту.", поэтому, как мне кажется, кластер уходя за видимую область удаляется и к нему невозможно нарисовать линию.

Подтвердите это пожалуйста, если это действительно так?

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

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

1 комментарий
кластер,кластеризатор,полилиния,координаты
Не открывается балун кластера
Андрей Работинский
12 апреля 2016, 13:21

Добрый день.

Я использую LoadingObjectManager для отрисовки большого количества объектов на карте. На странице с картой есть список видимых на карте объектов. При клике на элементе этого списка хотелось бы, чтобы карта центрировалась на объекте и, если объект входит в состав кластера, то масштабировала карту до тех пор, пока объект будет отображаться отдельно(не в составе кластера) или пока не будет достигнут максимальный для координат объекта зум карты. Если при достижении максимального зума объект все еще будет входить в кластер, то сделать этот объект активным и открыть балун кластера. Все работает при использовании функции приведенной ниже, за исключением открытия балуна на метке кластера. При открытии балуна вне функции setZoom он открывается нормально. Может есть какие-то пути обхода или я где-то что-то упускаю?

function focusOnGeoobject(id) {
        //Находим объект по id, который получаем при клике по элементу списка
        var object = loadingObjectManager.objects.getById(id);
        var coords = object.geometry.coordinates;
        var objectState = loadingObjectManager.getObjectState(id);
         
        myMap.setCenter(coords);

        myMap.zoomRange.get(coords).then(function (zoomRange) {
            //Масштабируем карту до тех пор, пока объект не выйдет из кластера или не будет достигнут максимальный зум
            while (objectState.isClustered && myMap.getZoom() !== zoomRange[1]) {
                myMap.setZoom(myMap.getZoom() + 1);
            }
            if (objectState.isClustered) {
                loadingObjectManager.clusters.state.set('activeObject', object);
                loadingObjectManager.clusters.balloon.open(objectState.cluster.id);
            } else {
                loadingObjectManager.objects.setObjectProperties(id, { preset: 'islands#redStretchyIcon' });
            }
        });
    }

5 комментариев
кластер,балун,LoadingObjectManager,zoom
Как изменить поведение автозума при клике на кластер
minsknoteby
8 апреля 2016, 18:03

Может кто-то уже сталкивался с такой задачей и может подсказать решение? Возможно есть какая-то опция для включения такого режима работы, а я ее просто не нашел в документации.

Задача следующая:
Необходимо по клику на класстер, в котором 5 или меньше объектов, показывать балун, если больше - автозумить.

За любую помощь буду благодарен)

4 комментария
кластер,кластеризация,API 2.1
Кластер сползает вниз при отдалении карты
myADB
28 марта 2016, 08:13

Уменьшаю масштаб, кластер сползает вниз, из Хабаровска в Приморье. Изначально думал, что дело в том, что точек снизу больше, но кластер сползает еще ниже, а под конец покидает Россию.
В чем дело?



Вот вывод точек
 

mySocialMap = ymaps.ready(function(){
    myMap = yaMapInit();
    myMap.controls.add('searchControl',{
     float:'none',
     position: {top:30,right:17}
     });
    myMap.controls.add('zoomControl',{
        float:'none',
        position: {top:110,right:17}
    });


    // Пропишем стили оформления кластерам
    var clusterIcons = [
        {
            href: '/images/map-cluster-small.png',
            size: [44, 45],
            // Отступ, чтобы центр картинки совпадал с центром кластера.
            offset: [-22, 18]
        },
        {
            href: '/images/map-cluster-big.png',
            size: [54, 55],
            offset: [-27, -24],
            shape: {
                type: 'Circle',
                coordinates: [0, 0],
                radius: 30
            }
        }];

    MyIconContentLayout = ymaps.templateLayoutFactory.createClass(
        '<div style="color: #FFFFFF; font-size: 12px; margin-top: -2px;">{{ properties.geoObjects.length }}</div>');


    objectManager = new ymaps.ObjectManager({
        // Использовать кластеризацию.
        clusterize: true,
        //preset: 'islands#invertedBlackClusterIcons',
        clusterIcons: clusterIcons,
        clusterNumbers: 100,
        clusterIconContentLayout: MyIconContentLayout,

        groupByCoordinates: false,
        clusterDisableClickZoom: false,
        clusterHideIconOnBalloonOpen: false,
        geoObjectHideIconOnBalloonOpen: false,
        hasBalloon: false,
    });

    myMap.geoObjects.add(objectManager);

    // запрос к бэку
        ajaxGetMapPoints = $.ajax({
            url: '/getP',
            type: 'GET',
            dataType : "json",
            data: {
            },
            success: function (msg) {
                objectManager.add(msg);
            }
        });
});

2 комментария
кластер,кластеризация
Нужен вычисляемый аналог 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
Динамический балун
Удалённый пользователь
5 февраля 2016, 10:18

Добрый день. 

Понимаю что уже полно постов на эту тему, но что то все старые и вскорее всего, что уже изменилось API. 

Вывожу на карту большое количество точек. При большом масштабе карты они собираются в кластер. По клику на кластер или метку нужно отправить ajax с id метки или массив id меток входящих в кластер, чтобы получть инфу по этим объектам и создать балун с ней. 

Какое событие нужно слушать и как получить список ID?

1 комментарий
балун,метка,кластер,событие,AJAX
Анимация распадания точек кластеризатора
Удалённый пользователь
18 сентября 2015, 15:41

Доброго времени суток. Не подскажете, есть ли у Яндекс Карт возможность прикрутить эффект распадания точек как на 2Гис. Пример http://api.2gis.ru/doc/maps/examples/external-modules/, при скроле кластер распадается с небольшой анимацией. Может кто-нибудь поделится ссылкой на пример для яндекс карт?

анимация,кластер