Клуб API Карт

Preset и objectManager (иконка для кластера)

Ilya Urs
23 февраля 2015, 12:25

Доброго дня, сообщество)

У objectManager решил сменить иконку кластера на свою. Все иконку находятся в спрайте. Для меток все красиво тянется с ymaps.option.presetStorage
Для кластера вписал

//CLUSTER
ymaps.option.presetStorage .add('mega_cluster#icon', {iconImageClipRect: [[203,378], [231, 431]], iconImageHref:'/images/icons/allicons.png', iconImageSize: [29, 53], iconImageOffset: [-13, -53], iconLayout: 'default#image'});

 

в iconLayout заменял default#image на cluster#icon не пошло дело.

Каким образом можно с пресета вытянуть иконку для метки кластера objectManager-а?

10 комментариев

назначаю саму иконку

objectManager.clusters.options.set('preset', 'mega_cluster#icon');

но вижу стандартные пока синие иконки.

Соберите пример на jsbin.com с реальным урлом к вашему спрайту

т е
var objectManager = new ymaps.ObjectManager({

...

   icons: 'mega_cluster#icon'

...

});

?

objectManager.clusters.options.set({

clusterIcons: [{
href: 'images/fav2.png',
size: [40, 40],
offset: [-20, -20]

}]
});

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

 

Вы спросили про objectManager (иконка для кластера).

Либо я не понимаю, что Вы хотите, либо неправильно поставлен вопрос.

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

Если Вы хотите сделать разную иконку для кластера в соответствии с каким-то значением (ее внутреннем значением), то тогда вот пример.

// Будем менять цвет кластера, если в нем более 20 объектов.

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

    var cluster = objectManager.clusters.getById(e.get('objectId')),

        objects = cluster.properties.geoObjects;

    if (objects.length > 20) {

        objectManager.clusters.setClusterOptions({

            preset: 'islands#redClusterIcons'

        });

    }

});

 

Если Вы хотите сделать внутри кластера разные метки иконки тогда так.

ymaps.option.presetStorage.add('1#icon', {iconImageClipRect: [[х,х], [х, х]], iconImageHref:'путь', iconImageSize: [х, х], iconLayout: 'default#image'});

{"type": "Feature", "id": 1, "geometry": {"type": "Point", "coordinates": [хх.хх, хх.хх]}, "properties": {"balloonContent": "Содержимое балуна", "clusterCaption": "Еще одна метка", "hintContent": "Текст подсказки"}, "options": {"preset": "1#icon"}}

Интересна возможность использования для смены иконки кластера (не точек) не свойства

clusterIcons

а
preset: 'ТУТ_ИКОНКА#С_МОЕГО_ПРЕСЕТА'

для кластера.

Есть ли такая возможность? (для иконок точек уже ее использую, интерес именно к кластеру)

Видимо такой функционал не реализован

Masis Abul, есть еще такой вопрос

 

var objectManager = new ymaps.ObjectManager({
                        clusterize: true,
                        gridSize: 30,
                        geoObjectOpenBalloonOnClick: true,
                        clusterHasHint: true,
                        clusterHintContentLayout: ClusterHintLayout,
                        clusterBalloonContentLayout: "cluster#balloonCarousel",
                        balloonContentLayout: BalloonLayout,
                        balloonContentLayoutHeight: 140,
                        balloonContentLayoutWidth: 240,
                        balloonItemContentLayout: ClusterLayout,                        
                        clusterIcons: [
                            {
                              href: '/images/icons/cluster.png',
                              size: [27, 27],
                              offset: [-13, -13]
                            }
                        ],
                        clusterIconContentLayout: null
                    });

 вывод информации метки в Карусели поменялся, а в одиночных метках остался в стандартном виде.


balloonItemContentLayout: ClusterLayout сработал вывод, а вот для метки нет

balloonContentLayout: BalloonLayout