Клуб API Карт

Изменить опции геообъектов, созданных при помощи ObjectManager.

spiritizmax
22 марта 2016, 10:04

Добрый день.

Не могу разобраться как можно изменить к примеру цвет иконки.

var objectManager;

myMap = new ymaps.Map('map', {
                center: [53.902257, 27.561831],
                zoom: 10
            }, {
                searchControlProvider: 'yandex#search'
            }),
                objectManager = new ymaps.ObjectManager({

                    clusterize: true,

                    gridSize: 32
                }
                )
            ;


var myObjects = [];

myObjects.push({
                type:'Feature',
                id: 0,
                geometry: {
                    type: 'Point',
                    coordinates: [53.87, 27.56]
                },
                properties: {
                    hintContent: 'test',
                    balloonContent: 'test',
                    clusterCaption: 'test'
                }
            });

objectManager.add(myObjects);

myMap.geoObjects.add(objectManager);


var result = ymaps.geoQuery(objectManager.objects);

result = result.search('geometry.type = "Point"');
//alert("Количество геообъектов: " + result.getLength());
// >> 1


result.setOptions('preset', 'islands#redIcon');
// цвет у объектов остался по умолчанию

8 комментариев
geoQuery несовместим с OM
Ок, тогда такой вопрос.

При помощи ОМ можно изменить свойства объектов по ИД.
Ок, тогда можно изменить след образом:

objectManager.objects.setObjectOptions(objectId, {
preset: 'islands#yellowIcon'
});

Но как можно получить objectId объекта, используя geoQuery или какой то иной способ?
spiritizmax,
какую задачу вы хотите решить?
dimik,
необходимо разместить на карте "точки" (более 100) и несколько полигонов.
Изменить цвет "точек", попавших в полигоны.
spiritizmax,
Для 100 точек не нужен ОМ. Используйте обычные геообъекты
dimik,
когда было менее 100 - так и поступал. Сейчас около 500 объектов. В перспективе увеличится на порядок. (
spiritizmax,
Либо делать это на сервере, либо через each перебирать все объекты и менять через setObjectOptions
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/objectManager.ObjectCollection-docpage/
вот цвет меняет
myObjectManager.objects.options.set('preset', 'islands#blueDotIcon');