Клуб API Карт

ObjectManager, установка preset в конструкторе

dbratsun
9 ноября 2017, 15:16

Добрый день!

Можно ли пояснить причину поведения при переносе установки preset из функций objectManager.objects.options.set и objectManager.clusters.options.set в конструктор на примере из песочницы

Было

ymaps.ready(init);

function init () {
    var myMap = new ymaps.Map('map', {
            center: [55.76, 37.64],
            zoom: 10
        }, {
            searchControlProvider: 'yandex#search'
        }),
        objectManager = new ymaps.ObjectManager({
            // Чтобы метки начали кластеризоваться, выставляем опцию.
            clusterize: true,
            // ObjectManager принимает те же опции, что и кластеризатор.
            gridSize: 32,
            clusterDisableClickZoom: true
        });

    // Чтобы задать опции одиночным объектам и кластерам,
    // обратимся к дочерним коллекциям ObjectManager.
    objectManager.objects.options.set('preset', 'islands#greenDotIcon');
    objectManager.clusters.options.set('preset', 'islands#greenClusterIcons');
    myMap.geoObjects.add(objectManager);

    $.ajax({
        url: "data.json"
    }).done(function(data) {
        objectManager.add(data);
    });

}

Стало

ymaps.ready(init);

function init () {
    var myMap = new ymaps.Map('map', {
            center: [55.76, 37.64],
            zoom: 10
        }, {
            searchControlProvider: 'yandex#search'
        }),
        objectManager = new ymaps.ObjectManager({
            // Чтобы метки начали кластеризоваться, выставляем опцию.
            clusterize: true,
            // ObjectManager принимает те же опции, что и кластеризатор.
            gridSize: 32,
            clusterDisableClickZoom: true,
            preset: 'islands#greenDotIcon'
        });

    // Чтобы задать опции одиночным объектам и кластерам,
    // обратимся к дочерним коллекциям ObjectManager.
    // objectManager.objects.options.set('preset', 'islands#greenDotIcon');
    // objectManager.clusters.options.set('preset', 'islands#greenClusterIcons');
    myMap.geoObjects.add(objectManager);

    $.ajax({
        url: "data.json"
    }).done(function(data) {
        objectManager.add(data);
    });

}

Получается что опция preset при создании OM полностью игнорируется?

4 комментария
Да, во избежание путаницы между пресетами геообъектов и кластеров из конструктора ОМ эту опцию убрали в пользу установки ее конкретным коллекциям
Где можно увидеть убранные опции?  Где вообще можно увидеть все опции для функций objectManager.objects.options.set и objectManager.clusters.options.set? В документации https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/option.Manager-docpage/#set этого не обнаружено 
dbratsun,
опции зависят от типа геометрии геообъекта
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/GeoObject-docpage/#param-options
dimik,
 это понятно, но какие опции активны? Например,  добавление следующего кода
objectManager.objects.options.set('visible', false)
не скрывает объекты, а вот
objectManager.objects.options.set('hasHint', false)
наоборот работает и скрывает Hint
как и  добавление в конструктор
geoObjectHasHint: false
Есть ли единая рекомендация по установке опций в ObjectManager? Не хотелось бы делать это для каждого объекта в коллекции отдельно. Конструктор или метод Set самое подходящее место для этого, не так ли?




Обновлено 4 декабря 2017, 17:04